We have some legacy software programmed in Delphi 2007. I had to upgrade Indy to something quite new from their source snapshot to be able to support TLS v1.2 in my application.
Old Indy was removed and new packages compiled and installed. Note that Indy changed also naming of the packages, currently they are called IndyCore110.bpl etc - with 110 suffix for D2007. Which probably doesn't even matter, since the packages are in any case newly build and the library itself is modified slightly.
Of course, the compiled packages and units from kbmMW CodeGear edition which we used in other parts of the system (and which need to be in the same Delphi environment on the same build machine) are not compatible with the new Indy neither by naming nor by whatever stands for version there, I can't re-install the kbmWM's packages.
If I understand it right, I need to obtain sources for kbmWM in order to be able to re-build and re-install it (while, possibly, fixing some compatibility issues where it comes in contact with new Indy). (Please correct me if this is wrong).
What I don't know is - which edition of kbmWM do I even need, what is the difference between Professional and Enterprise - are they different by component structure or only by licensing/support features? The CodeGear edition - which edition with sources does it correspond to - Professional or Enterprise?
I've attempted to compose a list of components and classes which are definitely explicitly used in our source, maybe this could help in answering the question. Here it is:
TkbmMWClientQuery
TkbmMWClientStoredProc
TkbmMWClientConnectionPool
TkbmMWBinaryStreamFormat
TkbmMWTCPIPIndyClientTransport
TkbmMWPooledSession
TkbmMWSimpleClient
TkbmMWServer
TkbmMWTCPIPIndyServerTransport
TkbmMWPooledSession
TkbmMWDBXConnectionPool
TkbmMWMSSQLMetaData
TkbmMWADOXConnectionPool
TkbmMWCustomConnection
TkbmMWClientIdentity
TkbmMWAccessPermissions
TkbmMWCustomServiceForm
TkbmMWCustomService
TkbmMWBinaryStreamFormat
TkbmMemTable
TkbmMWBinaryStreamFormat
I hope somebody can either consult me on what edition I might be able to use or advise me on installing the precompiled CodeGear edition together with the updated Indy. The Indy version is 10.0.52 downloaded from here: http://www.indyproject.org/Sockets/Download/Files/Indy10.DE.aspx
Again, for record keeping.
CodeGear edition is, in fact a subset of them all, quite close, but not quite as big as Professional. That was actually visible in the Features section of the website.
We did purchase a Professional license and in the end I was able to find a combination of versions of MW and MemTable that compiled on D2007
It was also possible to hack it a little bit in the part of interface with Indy to accomodate for the changes in the newest packages. I won't go into details here, this remains yet to be tested, for now I just know that it all builds together and projects open and compile.
Related
The following question has had me wondering for some time now as to how 3rd party component developers are able to ensure there components are compatible with all the various IDE versions?
I am just a single developer who uses Delphi XE and occasionally Lazarus, if I developed some components in Delphi XE how would I ensure they are compatible up to Delphi XE6 for example, and also compatible with older IDEs?
I don't mean in a coding sense because I believe you use the IFDEF flags when checking the Delphi version numbers. I mean if you don't have access to different Delphi versions how do you test the component?
It is not possible for me right now to purchase XE6 or a new Delphi IDE for a while - if it all, and even if I could I would not have previous IDE's like Delphi 5,6,7 etc.
So how do other component developers do it?
Purchase all the IDEs? which seems unlikely
Download Trials for the IDEs? which also seems unlikely
Get people to test the component if they have another IDE? Seems possible
Make it Open Source and let others test it? Also seems possible unless you want it Close Sourced
What it comes down to is I want to make a few simple components but I want them to be compatible with as many Delphi versions as possible should they ever be released to the public.
I don't have the means to get all the Delphi IDE versions and downloading trials may also not be possible. Even if I bought XE6 or the next release I would not be able to test with Delphi 8 for example.
So, how do 3rd party component developers make there components compatible and tested on various IDEs? Am I missing something obvious here, how can you have access to every Delphi IDE Version?
As a component vendor myself (I am the primary developer of Indy) who needs to support multiple versions, I can only speak for myself, but here is how I do it:
Purchase all the IDEs?
If possible, yes. I have a number of IDE versions installed in VMs, which I use for testing purposes. And for some versions that I do not have installed, I do have their RTL source code for reference purposes, at least. On the other hand, as a member of TeamB, I get free IDE licenses, which helps. Not everyone can afford to purchase every version, although newer versions do provide free licenses for older versions, so you should take advantage of that. I recently installed Delphi 7 through this. If a components works in Delphi 7 and Delphi XE6 then there is a good chance it will work in all versions in between (barring any version-specific RTL bugs, etc).
Download Trials for the IDEs?
N/A for me, but that might be a viable option for some people.
Get people to test the component if they have another IDE?
I do this with Indy. Although I do have several versions, I don't have every version. Other users who have versions I don't have myself do help. If nothing else, for setting up version-specific project files and testing install procedures.
Make it Open Source and let others test it?
This also helps. If you want to develop closed-source components, you could setup a private repository and give access to select users/volunteers. Most users want/need source code (to find and fix bugs when used in their projects, to satisfy corporate policy requirements, etc), so you should make sure you offer an option to pay for source code.
When you buy the latest you get access to all the previous versions (from v7 on - thanks Uwe Raabe)
Previous versions
I am using the first approach: Buy all versions. I have all Delphi versions back to version 3 (from 1997), but only 6 to XE6 are installed on my machine (with the exception of Delphi 8 which in my opinion should better be forgotten). But of course I didn't buy them all at the same time, I started with Delphi 3 and updated from there on.
Unfortunately it becomes more and more complicated to get older versions installed and running on "modern" operating systems (currently Windows 8.1 so far) so sooner or later I will be forced to switch to virtual machines. Not yet, though. Switching to VMs has the drawback that you can't batch compile using different Delphi versions:
call CompileForDelphi6.cmd
call CompileForDelphi7.cmd
etc.
like I do for GExperts.
I bought Delphi XE2 Starter edition because I can't really afford the other versions and didn't really read the full spec sheet.
Now I find that my old Delphi 7 programs which use TAdoConnection, won't compile as ADO DB is not included in the Starter Edition (although I seem to recall downloading it seperately for Delphi 7).
I would strongly prefer to Download ADOB and install it - can I somehow?
If not, what are my free and low prices options for database access? Preferably ODBC, although I might be able to live with MySql only.
Update: I intend to purchaser AnyDac/UniDac/MyDac (the choice of which will be another question).
However, I couldn't help but notice that my own generic collection of functions is all in a single unit and if I link that unit's DCU with the XE2 starter edition, voila! I have d/b access in the Delphi XE2 starter edition.
There are some commercial data access packages you can get or perhaps this OpenSource one may work for you: http://www.productivity.org/projects/tmysql/
Some commercial options for Delphi and MySQL (and there is support for other databases as well):
http://www.devart.com/mydac/
http://www.microolap.com/products/connectivity/mysqldac/
http://www.da-soft.com/anydac/
AFAIK you can't download additional modules for Starter Edition (even for pay) from Embarcadero, you have to use some thirdparty solution which doesn't depend on TDataSet (as AFAIK it isn't included in Starter Edition). Some options are
KADAO - if you want to stick with ADO;
ZeosLib - open source, supports MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle and SQLite;
UIB for Interbase and Firebird;
If you have the starter edition, you can use ZEOS access components.
You can download the XE2 package from SVN.
That's a bit fiddly, so in case you are unfamiliar with SVN here's a step by step.
Download a SVN client: http://tortoisesvn.net/downloads.html
Create a new folder to put the ZEOS components in; I use c:\borland\ZEOS
Right-click, and choose Tortoise SVN from the menu, then checkout or add.
copy paste the following url: https://zeoslib.svn.sourceforge.net/svnroot/zeoslib/branches/testing
There's a minor bug in the sourcecode that prevents it from compiling, see this answer how to fix that: https://stackoverflow.com/a/8389516/650492
As per usual you'll have add the directories the source code resides in to the search path, see: How to correctly set "Directories/Conditionals" and "Library" path
I started occupational programming with Delphi when the Turbos came out , and have licenses for Delphi 2006 Turbo Pro and Delphi 2009 Professional. I have been asked to support another in-house tool, written by another occupational programmer, who has since retired.
It's a Windows program, but it was developed with Delphi 6 using the CLX library rather than the VCL.
From what I gather, the CLX library was QT based and was removed prior to Delphi 2006.The support only consists of a few bug fixes and some minor tweaks, so I would rather not port the code to VCL, if i can avoid it.
Is it possible to install CLX support into either Delphi 2006 or 2009?
Maybe not a direct answer but if you upgrade to Delphi XE, you will also get license keys for some of the older versions of Delphi down to 7, and Delphi 7 included CLX (it was dropped in Borland Delphi 2006).
The short answer is: no. Unfortunately I don't know any long answer which could tell you how to workaround this.
No, you can't add support for CLX to your other Delphi versions.
If it's in-house software, then your company should still have the in-house Delphi installation used to develop it. Multiple Delphi versions can co-exist on the same system; install earlier versions before installing later versions.
If the former employee took that installation with him when he left, can you get it back? I wouldn't expect it really belongs to him anyway. You said he retired; that wasn't a euphemism for died, was it? If not, then you can still contact him.
If there isn't an easy way (and I suspect that there is not), you may need to continue using D7. D2009 is going to introduce the hassle of Unicode, and even going to D2006 is going to cause problems with 3rd-party libraries.
You could run both versions of Delphi on the same machine, but another option would be to use a VM for the legacy development. Either set up a new instance, or you could use the VMWare Converter to convert the other developer's entire machine into a VM image, which you could run on your machine, via the free VMWare Player.
BTW, VMWare Converter is a GREAT way to preserve old environments, to allow maintenance on older software that really needs to use a particular Delphi version, on a particular OS, "just like I left it". If you have a bunch of dusty computers under your desk, consider this option. VMWare Converter is the only tool I know of that will easily convert a physical machine to a useable VM that will run anywhere.
Just a quick question for those of you that know. Is it possible to have both Delphi (ver 7) and Lazarus installed at the same time. I want to make sure the Lazarus install will not interfere with my current Delphi install in ANY WAY. I would have asked this on the Lazarus fourms but thought I would get quicker reply here.
Anyway if you have both Delphi & Lazarus installed please tell me any problems you have encountered (if any) thanks.
Chris
Lazarus does not interfere with any version of Delphi, they can live along very happily.
The only interference is for commandline building, both projects have a make.exe file which are not the same.
This is easily solvable by not adding FPC to the path (removing it via control-panel system), and do a
set PATH=c:\fpc\2.5.1\bin\i386-win32;%PATH%
or wherever you installed as first line in your batch files.
I generally don't bother, but a previous employer we did a lot of cmdline building with dcc, and then it matters.
File associations are another, but already named. (but not such a big problem since the project extensions vary (.dpr vs .lpr, .dproj vs .lpi) )
Btw: Other development products (cygwin,mingw, and maybe even VS) have their own respective make.exe files and the same kind of problems.
I currently have Delphi 5 and Lazarus both installed on my Windows 7 laptop. As near as I can tell they don't interfere with each other.
I don't really use Lazarus though, as I prefer Delphi 5 which is what I've used forever.
I have Delphi 2006, Delphi 2010 and Lazarus installed. No problems at all. I am sure Delphi 7 will be the same. The only problem I can see could be the use of .pas extension in Lazarus. I mean because of association problems. But you can use a different extension for Lazarus (free pascal) source files. I think the installer asks you that.
I have Lazarus "installed" on a USB drive. It interferes with nothing whatsoever. It is actually a checkout of the Git repository that mirrors the SVN repository. I installed the latest stable FPC to C:\FPC, and then copied that folder to inside my lazarus source folder, e.g. \lazarus\FPC\ (and then uninstalled the C:\FPC installation), and then whenever I like I build the latest lazarus like this:
X:\lazarus\> git fetch
[...fetch messages...]
X:\lazarus\> FPC\2.4.0\bin\i386-win32\make.exe clean all
[...compiler output messages...]
X:\lazarus\> startlazarus
[...IDE starts up...]
The main advantage of this is that if you find an IDE bug, the source is immediately available and you can make and submit a patch instantly.
I've got a Delphi 2007 VM which includes a reasonably up-to-date Report Builder and Dev Express Suite. I use it for a particular project for a particular client.
For that same client, I also have a D5 VM which just so happens to use a (different, older) version of Report Builder and a different (older) version of some of the Dev Express components.
It would make testing and general maintenance of my work for this client a lot more straightforward if I could install D5 (and the versions of the components it uses) onto the D2007 VM, and have one 'uber VM' that contained everything for that client. Naturally I'd have to keep the various versions of the components 'separate'.
Hope you haven't all drifted off to sleep with boredom yet - just wondered if there were any tricks or tips I should be aware of before I try to do this. I figured that putting D5 onto the D2007 machine would be easier (larger existing VM drive etc, plus avoiding the process of re-registering a D2007 installation etc), but in if would be easier to add D2007 to D5 then I could do it that way round I guess.
Any advice? :-)
Multiple Delphi versions do coexist quite nicely if you install them in the correct order, newer versions after older ones. This is something that holds for VMs just as for real machines. If you have a VM manager with snapshot capabilities you could try to install Delphi 5 over Delphi 2007 and see whether anything breaks - if so you simply revert to the snapshot. However, since setting up a new VM isn't a big task I would do that instead and install Delphi versions in the recommended order.
Multiple versions of component sets can be installed as well, each into its own directory. Only one of them can be registered inside one IDE, obviously, but you can use different versions for different IDE versions. If you have an installer that gives you trouble you can always install Delphi and the component sets in one account and develop in another account. Installers do generally write only to the machine and current user registry hives, so running Delphi in another account allows you to install packages manually. Be sure to build the packages in Delphi-version-specific directories - even though most packages have version-specific package files all other source files have the same name and need to be rebuilt for each Delphi version.