I wish to migrate a huge Delphi 5 code using RXlib BDE Data-Aware controls to latest Delphi 10.4 Sydney with FireDAC. I wonder if there anywhere someone who already went through it and migrated RXlib version using BDE to FireDAC?
Related
I am trying to automatically figure out which Delphi version (of Delphi 5 to XE2 installed on my computer) to use to open a given project without upgrading that project by mistake.
Up to Delphi 7 there is a .dof file in .ini format for each project.
Delphi 5 does not have any entry which might help, but starting from Delphi 6 there is a [FileVersion] section which contains the following values:
Delphi 5: N/A
Delphi 6: 6.0
Delphi 7: 7.0
So I guess that settles that, since older Delphi versions do not concern me.
For Delphi 2005 and 2006 there is a .bdsproj file in XML format containing a version entry:
\BorlandProject\PersonalityInfo\Option\Option
In Delphi 2005 it looks like this:
<Option Name="Version" Type="String">1.0</Option>
In Delphi 2006 like this:
<Option Name="Version">1.0</Option>
So I could look whether the attribute "Type" exists and depending on that decide on Delphi 2005 or 2006.
Could somebody please have a look at his Delphi 2005 and 2006 projects and verify this difference? (Or do you maybe have got a better idea?)
edit: I just tried to verify this and found, that Delphi 2005 does not always add the Type-Attribute. So now I am stuck.
edit: Maybe the GUID stored there is unique to the Delphi version?
Delphi 2005: {87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
Delphi 2006: {CFE1BEE6-6FDE-4241-8CA5-D38D14EAA768}
Somehow I doubt it, I am afraid that the GUID may represent different SKUs (Professional / Architect etc.). But maybe you could verify this?
Starting with Delphi 2007 there is a .dproj file in a different XML format. The Delphi 2007 format does not contain any version entry I could find, but from Delphi 2009 on there seems to be the following entry:
\project\PropertyGroup\ProjectVersion
These are the values I found in my .dproj files:
Delphi 2007: N/A
Delphi 2009: 12.0
Delphi 2010: 12.0
Delphi XE: 12.3
Delphi XE2: 13.4
If these are correct, I could reliably determine Delphi 2007, XE and XE2. But how do I distinguish between Delphi 2009 and 2010?
Also, these numbers look odd to me. Does anybody know whether there are any differences between the various updates of Delphi, e.g. did the original Delphi XE2 release maybe start with 13.0 and with each update increment the number after the dot? But if that's the case, how did Delphi XE get 12.3?
(There is a similar question How can I tell what version of Delphi was used to create a project but the single answer there is quite limited.)
Just in case anybody else needs this: I have just added a page to the Delphi Wiki which summarizes all answers and adds information for newer Delphi versions (currently up to Delphi 10.4.1).
I have now compared the .bdsproj files of Delphi 2005 and 2006 and there is no difference. Also, there is no difference between the .dproj files created by Delphi 2009 and 2010.
So the answer is:
if a .dproj file exists -> read \project\PropertyGroup\ProjectVersion
empty -> Delphi 2007
12.0 -> Delphi 2009 or 2010
12.2 or 12.3 -> Delphi XE1 (according to Uwe Schuster)
13.4 -> Delphi XE2
if a .bdsproj file exists -> Delphi 2005 or 2006
if a .dof file exists -> read [FileVersion]\version
empty -> Delphi 5 (or possibly older)
6.0 -> Delphi 6
7.0 -> Delphi 7
Unfortunately this does not allow me to write a program that automatically starts the correct Delphi version for a given project.
Maybe I will let the program ask the user if there are two possibilities and store his answer in a .ini file so the next time the program knows which Delphi version to start.
btw: The reason I was looking into this is that I have several times accidentally opened Delphi 2007 projects with a later Delphi version which upgraded it and I had to reverse these changes by hand. This has become so annoying that I wanted to prevent it by registering my own program as handler for .dpr files.
The version numbers in the *PROJ files are not bound to releases or updates and not all versions hit the streets.
Delphi XE RTM used version 12.2
Delphi XE Update #1 uses version 12.3
Delphi XE2 (RTM till Update #4) uses 13.4
Just installed XE3 (RTM).
14.3 XE3 (C++ & Delphi)
Today I find this topic googlin about Delphi edition (Standard, Professional, Enterprise).
Anyway I checked some .dof files spread in mine machine and there is facts related to ancient delphi versions:
if a .dof file exists -> read [Directories]/Packages
Delphi 3
[Directories]
OutputDir=
UnitOutputDir=
SearchPath=
Packages=VCLX30;VCL30;INETDB30;INET30;
Delphi 5
[Directories]
OutputDir=.
UnitOutputDir=.
PackageDLLOutputDir=.
PackageDCPOutputDir=.
SearchPath=
Packages=Vcl50;Inet50;Inetdb50;Vclx50;Indy50;
Additional info can be finded near end of dof file:
D3:
[Excluded Packages]
C:\Program Files\Borland\Delphi 3\Bin\DCLDSS30.dpl=Delphi Decision Cube Components
C:\PROGRAM FILES\BORLAND\DELPHI 3\BIN\DCLTEE30.DPL=Delphi TeeChart Components
D5:
[Excluded Packages]
$(DELPHI)\Bin\CorIde50.bpl=Borland Core IDE Package
$(DELPHI)\Bin\direct50.bpl=Borland Direct IDE Package
please does exist some native driver for Informix databases for Delphi XE2 Professional ?
What are you using?
I know that does exist IDAC, now opensource, but these sources are for pre-Unicode Delphi versions and is not easy to change it (at least for me).
Thank you very much.
I also used IDAC before, but with upgrading to XE2 I changed to AnyDAC.
I would buy the new Delphi XE2 and port some D7 projects. I would buy the cheapest version (starter ?) and use the new Firemonkey Platform.
1/ I use the ADODB for MDB databases is this version compatible with it ?
2/ It seems that there is no DBGrid in Firemonkey is it true ?
1) I use the ADODB for MDB databases is this version compatible with it?
A:Yes you can still using ADO in a FireMonkey or VCL application in Delphi XE2. But only if your delphi edition is not Starter.
2) It seems that there is no DBGrid in Firemonkey is it true ?
A: Yes is true, but now using LiveBindings you could bind your data to a TStringGrid or a TGrid.
ADO components are present in the Delphi 2009 Professional Version? Currently I'm using delphi 5 professional version which does not include the ADO components.
thanks for help.
Yes, the Ado components are present in All the versions of delphi 2009.
Check the feature matrix of delphi 2009 and look for
dbGO™ for ADO connectivity for Win32 (MDAC 2.8)
We are migrating from Delphi 6 to Delphi 2010,earlier we were using BDE engine to connect to Sybase Database from Delphi 6. We found out that Delphi 2010 does not support BDE.
We are trying with dbexpress but we are not able to catch the exception(raise error) thrown by Sybase.
Could you please let me know if there is any other driver except dbexpress to connect to Sybase Database from Delphi 2010.
Thanks.
Regards,
AS
You can use AnyDAC to connect to:
Sybase SQL Anywhere (AnyDAC native driver)
Sybase Adaptive Server (AnyDAC ODBC bridge).
I suspect your real problem is that you have the Professional version of Delphi rather than Enterprise. As far as I know, BDE can still be used with Delphi 2010.
With Delphi 6 the Professional version allowed connections to remote databases. Somewhere between Delphi 6 and Delphi 2010 that policy was changed.
Anyway, you really need to give up on BDE and move forward.
Edit: (jeroen)
The BDE for relational access (aka the BDE SQL Links technology) has been deprecated since 2002, about 2 years after the introduction of dbExpress in Kylix and Delphi 6.
You could try a workaround:
Install Delphi 6
Update BDE to the latest available version (there should be some updates on Embarcadero site, I hope)
Install Delphi 2010
IIRC the available SQL Links should not be removed (otherwise it would break the older version), and they should still work in Delphi 2010. But that's really a stopgap try.
Devart's UniDac can connect to Sybase without using dbExpress, but I never used it.
Sybase drivers for dbExpress is included in Enterprise version of Delphi. If that is not an option you can use dbGO (ADO) that is included in Professional.
You can try ZEOSLIB which contains SyBase connectivity, along with many other SQL dbs.
As far as I can see, it requires you to remove your Query/Table objects and replace them with its own Table and Query replacement objects, but then, so would moving from BDE to ADO/dbGo or dBExpress.
And you really should get the BDE out of your application. It's dead as a doornail.