[Fatal Error] '' is not a valid GUID value while upgrading to RemObjects Remoting SDK for Delphi - 9.3.105.1337

Hi,

We have a legacy project in Delphi 7 and we are upgrading to Delphi Tokyo. We have installed Delphi Tokyo and RemObjects Remoting SDK for Delphi - 9.3.105.1337.

When I open my Delphi 7 application in Delphi Tokyo and compile then suddenly I get following error.
‘’ is not a valid GUID value
[Fatal Error] ‘’ is not a valid GUID value

And I am getting that same error when I try to open Service Builder from Delphi IDE to check the library details

.

I also checked following link of same kind and Recompiled BuildPackages_D25.groupproj manually in IDE but no success. Still I am getting same error when I compile my project.

Please help me. I have attached image file also.

can you attach your .RODL here or send it directly to support@, pls?

Thanks for the reply.

Sorry EvgenyK, I cannot attach that file here as my client refused to attach. But following are little detail about the RODL Intf, Invk and Impl file details…

Actually I found that if I create a new RODL file then it would work fine. But when I upgrade the RODL file from Remobjects SDK old version in Delphi 7 to new version 9.3.105.1337 in Delphi TOkyo then only I get that error.

any solution…Please…

Looks like, your RODL is broken - it has some problems.
it was a reason why I asked for your RODL.

if you have old version of ROD - try to open your RODL in ServiceBuilder of that version and check it for errors (Tools->Check Library for Problems) and fix them.
Later try to open it in Service Builder v9.3

pls open your RODL in any text editor like Notepad and add UID="{guid}" for your services.

old:

<Service Name="MyGlobalSerivce">

new:

<Service Name="MyGlobalSerivce" UID="{4B2AB991-DB76-48D0-9BD0-BAB10B3E2612}">

note: you can use the same UID here and change it later in ServiceBuilder:

– Forwarded reply from customer:

Hi EvgenyK,

Thanks lot for the reply. It solved that error and now I am able to open that RODL file in new Service Builder.

But I got following new errors after upgrade.

error E2291: E2291 Missing implementation of interface method MyGlobalSerivce.GetClientAppInfo

Actually I found that after upgrade in new Interface units it changed the String type to ANSIString and WideString type to UnicodeString . And it skipped Implementation unit generation during build.

MyGlobalSerivce.GetClientAppInfo structure

In Old
function GetClientAppInfo(const sAppName: String; out sVersion: String; out FileDateTime: DateTime; out sMessage: Widestring): Boolean;

In New now
function GetClientAppInfo(const sAppName: ROAnsiString; out sVersion: ROAnsiString; out FileDateTime: DateTime; out sMessage: UnicodeString): Boolean;

So my question
Is it correct or I need to do some settings in RODL file.

I guess this changes are because of Unicode changes in latest Delphi version. But in latest Delphi version also String is supported as its now Unicode.
Please correct me if I am wrong.

And I also noticed that new version created some more classes. I have attached the files created in Delphi 7 and Delphi 10 Tkoyo.

Please help me last time.

Thanks,

it is correct. You are migrating from RO2 to RO9.

In RO2, String type meaned AnsiString and WideString type meaned unicode data.
in RO9, we use UnicodeString instead of WideString because this type isn’t supported on mobile platforms.

it is a reason, why compiler fails with E2291.

from uROEncoding.pas:

type
  ROAnsiString = string;

ROAnsiString type shows that this parameter will be serialized as AnsiString.

I can suggest just copy service declaration from _Intf and paste to _Impl, i.e. replace

    function Sum(const A: Integer; const B: Integer): Integer;
    function GetServerTime: DateTime;
    procedure GetClientAppInfo(const sAppName: String; out sVersion: String; out FileDateTime: DateTime; out sMessage: Widestring);

with

    function Sum(const A: Integer; const B: Integer): Integer;
    function GetServerTime: DateTime;
    procedure GetClientAppInfo(const sAppName: ROAnsiString; out sVersion: ROAnsiString; out FileDateTime: DateTime; out sMessage: UnicodeString);

we deprecated _Async file and put async classes into _Intf