I still see a lot of people running old versions of Delphi, the most common one people freeze at is Delphi 2007, because of the Unicode changes to String types, but I have also seen the odd one stick at Delphi 7, or even Delphi 6. Here are some suggestions on getting out of those Don’t-Upgrade-Ever Tar-Pits.1. You may lack motivation. You may not realize how much you need a modern Unicode String type. You start by believing you can upgrade your AnsiString-forever, or shortstring-forever codebase. Yes, yes you can. The internet is Unicode, and every computer is connected to the Internet 24/7. WideString is not enough. The modern String (UnicodeString) in Delphi is fast, flexible, and internet ready. I’ve spoken to people who aren’t upgrading because they assume the new String is slower. On some benchmark code (Sieve of Eratosthenes and some string crunching code), the latest Delphi XE5 is actually faster at UnicodeString (String) operations than Delphi 7 was at AnsiString (String) operations, and basic IntToStr and StrToInt functions.2. Upgrade for Productivity boosts. The IDE INSIGHT feature is fantastic. Once you get used to it, I find it hard to use a version of Delphi that lacks it. It’s google for your IDE. I like to supplement it with the GExperts file open dialog, but the combination of the two is magic.3. You’ve been down the Ancient Delphi Codebase road, and you know what a pain things like Z-Order bugs are. If it helps you decide to move up, remind yourself that the VCL in 2007 and later supports proper Z-Order parenting, so if you’re on Delphi 6, or 7, it’s time to say goodbye to silly Z-Order bugs. (Window A behind Window B). If your code is not Unicode ready yet, you can get XE5, and it will entitle you to a Delphi 2007 license (previous versions access), get your Z-Order bugs fixed, then continue to work towards proper modern Unicode readiness in your codebase.4. Maybe you don’t really need 64 bit Delphi, but having the possibility open sure is good, right? Or maybe you would like to build something 64 bit? Running Windows 64 bit? Want to access lots of memory? Want to write a shell extension? 32 bit may be great for lots of things, but having 64 bit in your bag of tricks is worthwhile. 64 bit Windows will be so mainstream eventually that (like Unicode) the whole Delphi world will eventually move to it, and Win32 will eventually fade away. Yes. Yes, it will. Do you still want to be building Win32 apps when Win32 goes the way of Win16? Remember NTVDM? WOW is the new NTVDM. It isn’t where you want your apps to live, is it? Inside the backwards-compatibility box? So be ready.5. Mac OS X support. You can write apps for OS X with Firemonkey. Maybe this isn’t a “need” thing, but it’s nice to have in your tool-belt. Being on a modern Delphi version means having this around when you want it.6. iOS support. You can write native iPhone apps with either RAD Studio XE 5 or Delphi XE5 + the mobile add-on. Your kids will think you’re cool, if you make them a little App for Christmas. Right? Of course right. 7. Android support. You can write Android apps using the Delphi compiler for native ARM and Android NDK. 8. If you’re stuck on a version prior to 2010 you don’t have proper platform support for Windows 7, and Windows 8. Things like the file-open dialogs, etc, changed at the Vista level, and that support was never in Delphi 6,7 or 2007. I think it’s kind of funny that Delphi grew proper Glass (DWM) support, and then Microsoft suddenly yanked Glass out of windows 8. But maybe it will come back in Windows 8.2. You think? Anyways, the core VCL on modern versions like Delphi XE5 is a lot less painful to support Windows 7, 8, and 8.1 on, than the creaky old version you’re using, if your version is older than, say Delphi XE.9. VCL styles. This is an amazing way to add a “face lift” to your VCL application without rewriting it. There is a bit of work involved, but a lot less than you’d think. The amazing third-party add ons like RRUZ’s awesome helper library make it easy to make your VCL app look great. If you haven’t got at least Delphi XE2, you don’t have this great feature. To go with that pretty Style support, add some VCL gesture support. Support touch gestures on a touch-screen laptop or Windows Surface Pro tablet, using VCL gestures. Swipe, pinch, or make your own custom touch gestures. Combine this with the VCL styles and you can modernize your look, and functionality from “90s” to “up to date” pretty quickly for your core Win32 desktop apps.10. Delphi Language Evolution. If you’re still on Delphi 6 or 7, and you don’t have Generics, or modern RTTI, or the new module grouped-naming system (Unit Scopes), you might be surprised how much nicer and more readable these things make your code. For example, I love my Uses clauses to be grouped with all the System units first, then VCL units, then my third-party library units. The ones that have no dots in the namespace are either primitive third party libraries, or my own units. It’s amazing how convenient and nice and “expressive” these longer names are. I love them.I hope this list gives someone the motivation they need to kick themselves in their own butts and get their codebases out of Delphi versions that should be retired, and moved onto a modern Delphi version. You’ll thank me.Oh. And how do you actually DO it when you get the nerve? I’ll write more about that later. But for starters, I suggest you try to write some Unit Tests. Remember that while you are in progress of modernizing your codebase, you can do it without ever breaking your application or introducing unknown behaviour. I’ll write more about that approach, in an upcoming post.Update: If someone is sceptical about the value of updating, I ask them, what does it hurt to download the trial and try it? You can do almost anything you want to try with the demo version, get your code mostly ported, try to port your components up, get stuck, and post questions on StackOverflow. If you really love Delphi 7, great. It was a great version. Enjoy it until the heat death of the universe, or at least, until the sun goes super-nova. No problem. But most of us moved on long ago, and I just wanted to let you know why we did.
Embarcadero: Firemonkey OOP
Embarcadero: Firemonkey C++