Problems upgrading ROSDK from 7.0 to 9.2 in Delphi 2007

Yesterday I upgraded my Delphi install of ROSDK from 7.0 to 9.2. When I restarted Delphi, and loaded my projects, there were obvious errors.

The first problem I noticed was when I activated a server project, there seemed to be no way to bring up SErvice Builder from within the IDE. I ended up starting SB manually, loading the RODL, and somehow I overwrote all my exising intf/impl/invk files essentially losing all my code from the 7.0 version.

I had backups, so that is not an issue, but I need to know how to get SB integrated w/ the IDE, or what has changed on that front. How can I properly “upgrade” my exising impl/intf/invk core code without losing all my implementations.

Thanks!

Alan

We have moved RO menu from main menu into Tools submenu:

also check that RemObjects_Server_IDE_D* package is installed.
if it isn’t, you can open RO\Source\BuildPackages_D*.groupproj and install it manually.

Thanks much. I’m going to first try an uninstall and reinstall.

I did a full uninstall, cleaned out the ROSDK for Delphi directory of old files, did a reinstall and it didn’t compile the DCUs at all, so now nothing will load.

trying again. Something is not right.

can you attach RO\log.html here or sent it to support@ ?

trying one more tiem, and NOT selecting D7 also. That could be the problem. I’ll let you know shortly and attach that file if need be.

log.zip (3.0 KB)
I did an uninstall, and reinstalled only selecting D2007. This resulted in the DCUs being compiled, but I still think a path is messed up because none of the build packages were properly loaded, and I couldn’t enable them from ‘INstall Packages’ without errors about not finding a bpl.

Help!

Can you specify what Indy version you are using in Delphi2007 - Indy9 or Indy10 ?

9

pls do these changes:

  • add uROExceptions unit into uses section of uROIndyHTTPChannel.pas and uROIndyTCPChannel.pas
  • use this RemObjects.inc ( RemObjects_inc.zip (2.4 KB))
  • if you are using old RO Encryption, uncomment {.$DEFINE RemObjects_UseEncryption} in provided RemObjects.inc
  • rebuild all RO packages
  • if you have problem with loading RO packages, try to restart (or logoff) Windows - in some cases it helps.
  • another workaround - review your system %path% - it may be too long …

I installed yesterday’s beta, and i’m seeing the same thing. The DCUs are compiling, but no packages can be compiled. I loaded the build*.groupproj, and tried to do a build all projects, and i’m getting the message:

[DCC Error] uRODECConst.pas(88): F2039 Could not create output file ‘…\Dcu\D11\uRODECConst.dcu’

Could this be a Windows 10 rights issue?

yes, it is.
you need to have write rights to RO folder, or launch Delphi under Adminstrator for recompiling RO packages

would it be easier to just install ROSDK on a different drive, or in a different directory other than under \Program Files (x86) ?

yes, it is possible

I think that fixed it. now…lets try on my old ROSDK 7.0 projects…

What do I need to do to properly update the intf/impl/invk skeleton code/declarations without losing my implementation code?

in 9.2 AnsiString/UTF8String were replaced with String, so you may caught case that declarations in _Impl are different from ones in _Intf

workarounds:

  • generate _Impl in ServiceBuilder
  • copy method’s declarations from _Intf to _Impl
  • uncomment {.$DEFINE CODEGEN4_LEGACYSTRINGS} in RemObjects.inc and again rebuild packages. in this case, codegen will generate code as before.

How about this one…

in the *_intf.pas files, for the service constructors, there are three Create() methods defined. The last two marked with ‘overload’. Compiler is stating:

[DCC Error] AdEntryLibrary_Intf.pas(3218): E2267 Previous declaration of ‘Create’ was not marked with the ‘overload’ directive

where the first class function Create() is not makred with ‘overload’

hmm, I can’t reproduce this:

  CoNewService = class(System.TObject)
  public
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): INewService; overload;
    class function Create(const aUri: TROUri; aDefaultNamespaces: String = ''): INewService; overload;
    class function Create(const aUrl: String; aDefaultNamespaces: String = ''): INewService; overload;
  end;

when I add ‘overload’ to the first declaration, Delphi/RO removes it from the first dec. It wants ‘overload’ on all 3, but it won’t allow it here.