Tuesday 23 June 2009

Bit the bullet: Delphi 2009!

So, I finally bit the bullet and purchased a Delphi upgrade, to D2009. The offer was too tempting and I have started to become frustrated with being left too far behind with Delphi 6.

Thanks to one of the distributors in the UK, Grey Matter, we got the D2009 upgrade for 20% off. This was a promotion they were running for those who didn't want to take advantage of June's "Buy Delphi and get RAD Studio free" promotion. Apart from a slight, but only curious interest in Delphi Prism, there wasn't enough to tempt me, in these economic times, to not take the 20% off instead.

And so I will chronicle my journey to take our 10 year old product, written in Delphi 5 then Delphi 6, to Delphi 2009. The challenges I forsee are more to do with API headers written for some of the hardware devices (clocking terminals) that we support with our T&A product, but time will tell.

To start with, it will be a case of getting the main part of the software converted and see how that goes. I have the latest versions of all our third-party products such as Raize Components 5, TMS Component Pack, ReportBuilder Server & Enterprise 11 and TsiLang Translation.

Could have some fun with older components like the Crystal Reports VCL component for Delphi (for Crystal Reports 7). Anyone got any experience with that?

Should be "interesting"...!

4 comments:

Anonymous said...

Glad to see you made the plunge! I've been lucky to work for an employer that has bought my team licenses for Delphi 2005, 2006, 2007, and 2009.

So far, 2009 has been a great upgrade!

Actually they buy the upgrades because my co-workers and I are able to do such cool things with Delphi.

Sony said...

Wil interested in reading your posts as I am in a similar boat. We have an application written in Delphi 6 and have upgraded to Delphi 2009.

Main issue I see are to do with 3rd party tools as we are moving from using InfoPower and DevExpress to only using DevExpress tools.

Unknown said...

Sony,

Yes it's really about the extra components and external code. I've noticed that Delphi 2009 introduced a lot of nice new features to some basic components like TButton, which can now take images, and TButtonEdit which can have buttons within the edit box. I'm wondering whether to replace the Raize ones that already do this with the standard Delphi ones.

Has anyone else come across this?

Warren said...

I learned a series of steps in my transitions that only took me about two weeks to get expert in. When to change PChar to PAnsiChar, or Char to AnsiChar, or String to AnsiString, and when to leave it alone. Where to add the casts when a layer using bytesize AnsiStrings must be matched up to regular Strings, When to realize that a Win32 API declaration is now the one with the W suffix, and when to explicitly specify A suffix (ansi) for API calls.

Component internals introduce a lot more changes, if you are rewriting components that work inside the database componentry layer, but application porting is actually not that hard.

What I find is that 25% of the real effort I expended on this task was actually "upgrade to 2009" and 75% was fixing accidental complexity (badly designed code) that also just happens to be necessary because of contemporary changes to the environment in which my code is expected to run. For example, Delphi 2009 is not the only change, there are new versions of various third-party components to deal with, new technologies, new versions of Windows with their new requirements (XP and Vista will break your application in various ways, which you have to fix).

Have fun. And try out the Codegear Delphi forums, they are a good source of help.

Delphi 2009 is my personal favourite version of delphi now, it dethroned the long-reigning champion Delphi 7, for me.

Warren