Wednesday, March 21, 2007

Delphi 2007 ESD arrived - one gotcha

We ordered Delphi 2007 ESD from the local Norwegian CodeGear distributor alfacode.no a few days ago and earlier today the email with download link and licence keys arrived (the DVD will arrive in a couple of weeks, they say).

I downloaded the installer stub that then downloads and installs the required binaries - it all worked very smoothly. After the install was done Delphi 2007 ran fine. But I was a little worried for a while - because when I tried to start BDS 2006, I got an error dialog with the following unnerving message:

---------------------------
bds.exe - Entry Point Not Found
---------------------------
The procedure entry point @Uxtheme@BufferedPaintSetAlpha$qqruip11Types@TRectuc could not be located in the dynamic link library rtl100.bpl.
---------------------------
OK
---------------------------

After scratching my head for a while, I searched by harddisk for all rtl*.bpl files. Both Delphi 2007 and BDS 2006 use a binary called rtl100.bpl - and normally it resides in the Windows\System32 directory. The Delphi 2007 installer updates this (and most other VCL bpls) when it installs. The problem is that I had a second copy of this file in the BDS 2006 bin directory (called C:\Delphi2006\bin on my system). This was entirely my own fault because I had copied it there and patched it using Peter Vones tool to hack away startup time as I've blogged about before.

The reason this happens is that Delphi 2007 installer upgrades all the *100.bpls in the System32 directory, but BDS 2006 tries to load the old rtl100.bpl from the bds.exe startup directory that is not compatible with the new vcl100.bpls now residing in System32. The solution was simply to delete or rename the rtl100.bpl in the Delphi2006\bin directory.

Lesson learned: it is dangerous to live on the edge - and you better know (and remember) what you are doing.... ;).

5 comments:

  1. Well, in my case, it was Delphi 2007 that was blowing up, and I did not have BDS 2006 on my system...

    Later,
    Madruga
    (http://memyselfanddelphi.blogspot.com/)

    ReplyDelete
  2. "The reason this happens is that Delphi 2006 installer upgrades all the *100.bpls in the System32 directory..."

    I think you meant to write "Delphi 2007" in the above, right?

    ReplyDelete
  3. "The reason this happens is that Delphi 2006 installer upgrades all the *100.bpls in the System32 directory, but BDS 2006 tries to load the old rtl100.bpl from the bds.exe startup directory that is not compatible with the new vcl100.bpls now residing in System32."

    Do you mean "Delphi 2007 installer" instead, Hallvard?

    ReplyDelete
  4. I had a very similar error message. In my case, I fixed it by changing the path in "my computer" properties. If Delphi2007 was in the path before BDS2006, then BDS did not load all 3rd party components properly and gave me several error messages about "entry point not found."

    ReplyDelete

Comments are moderated - spam and non-relevant links to will be deleted.