Why you really should upgrade from Delphi 7

Delphi 7 is probably the most popular version of Delphi that has ever shipped. So much so that several developers staunchly stand by their favourite of many years and refuse to move up.

But Delphi has really grown with some truly fabulous things getting added in the time since the old stalwart shipped. I have compiled a list of five reasons why I believe no Delphi developer should remain on Delphi 7. Unlike most of these “top 5” lists, mine is not a list of five magic bullet features, but rather five areas of importance.

So here is my list – in random order – of the top five reasons to upgrade from Delphi 7:

1. The new IDE. Yes, I know it is different from what you’ve grown used to in Delphi 7 and yes, I know it looks a lot like Visual Studio. But is a whole lot faster than Visual Studio 2008 and much more productive than Delphi 7. Stability is not a problem on Delphi 2007 and Delphi 2009 and several specific improvements make a fantastic difference:

  • The new component toolbox. If you really want to, you can use the legendary Andreas Hausladen’s component palette replacement. But you really shouldn’t. The old, horizontal layout is hugely wasteful and gets more and more inefficient as the number of components grow. The new one is more compact, reads easier, can be filtered, works great with the mouse wheel, works great with the keyboard and requires less mouse movement when exploring.
  • The editor has learnt some interesting new tricks, including code templates. You really want that. And Syncedit. And regions. And XML comments.
  • The CPU window can now show only the disassembly view if that is all you need. How sweet is that?
  • Build events can copy compiled files where they’ll be needed, append location info, run unit tests or do whatever you need them to. And multiple build configurations can be configured or stacked to create almost any system that makes sense to you. That is a huge upgrade right there.

2. New toys! The language has had a lot of new features added. A lot of those were added because they were needed by the .NET CLS. But some of what were added were completely novel. Like class helpers, which is a language construct to implement the Decorator pattern with. This feature is so cool that Microsoft aped it in C# 3.0 with extension methods. Add to that support for generics and anonymous methods and you end up with more expressive constructs that can lead to better – and less – code.

3. A lot of modernisation in the VCL. Unfortunately, the DBGrid still looks like a fugitive from Windows 3.1, but we now have support for a whole lot of modern features, like:

  • Vista glass and task dialogs.
  • Ribbon controls, AKA Office Fluent Interface.
  • Customisable hints that can provide any level of info, right up to the thumbnail previews that you see in Office 2007.
  • Lots of little UI touches, like text hints and balloon tips on edit controls.
  • TStringList can now manage the lifetime of the objects you stored (OwnsObjects property, like TObjectList).
  • Much improved, generics-savvy data structures. Dictionaries, stacks, queues, lists – all type-safe and all with object-aware versions that can manage the lifetime of the objects they store. I love ‘em.
  • Unicode! If you only need to develop for a single language this won’t be such a big benefit, but to thousands of applications this feature is a godsend.

4. It’s a good deal. Back when I used Delphi 7, C++Builder was separate and cost the same. I work at a company with a Software Assurance subscription and we get Delphi, C++Builder and Prism all for one single price. And I’m sure you’ve seen the Buy One Get One offer? I recon RAD Studio+Change Manager looks like an absolute winner.

5. Time marches on. The longer you put it off, the harder it gets to upgrade. If you took every version from Delphi 2005 onward, every upgrade would be small enough to be manageable. Even the Unicode port was relatively painless once our third-party controls became available. But jumping from Delphi 7 to Delphi 2009 is already quite a large amount of work. That is only going to keep growing as you continue to procrastinate.

And how about changes in the underlying operating system? Sure you can keep writing your own libraries to use the new features or keep ignoring them, but neither is a very good idea. And the rules keep changing – you don’t store setting files in Program Files anymore, when the mouse hovers over your application’s task button you should now show a preview and so on. Name and shame time: I love MediaMonkey, but their Delphi 7 app is starting to reek like an old-age home. My PC at home runs Windows 7 and MediaMonkey is a decade behind how my other apps behave.

Lastly, the community moves on too. The Delphi community is one of Delphi’s great strengths and through the years I have picked up probably thousands of code snippets that have made my work better in some way – even improve my way of thinking as a programmer. The longer you stay behind, the greater the percentage of advice, solutions, tips and humour that will be irrelevant to you.

To me, that is probably the scariest thought of all.

21 Comments »

  1. Ken Knopfli said

    I have D7 and D2007 and I keep D7 open because even simple things are impossible to find in the D2007 help. If I were to introduce D2007 at work instead of VS, I’d be spending all my time helping newbies with trivial questions. Not very RAD.

    XML help? Didn’t know it existed! where is it explained?

    Class helpers … ditto

    But you CAN go back to the old floating window IDE at the click of a menu point.

    Regions – poor implementation compared to VS. All regions in a file jump open at the slightest excuse, meaning after the third time of going through the file and closing them all, I just stopped using them.

  2. You’re absolutely right!

    I’m working with Delphi 2007 (the best Delphi ever) and Delphi 2009 and few days ago I was forced to start Delphi 7 to solve some bugs in an very old project.

    I was feeling thrown back decades. I can’t understand people punish themselves by using Delphi 7 instead of the fantastic new versions 2007 und 2009. Productivity and fun of programming are much better with 2007 and 2009.

  3. sam said

    Yes, I am still on D7 and happy with it.

    It was a real waste of time to rewrite the whole IDE (gallileo) instead of continue the D7 IDE.
    As time has proven now, the whole .NET stuff has moved to VS+Prism and the IDE is again used for Delphi and C++ (Win32).
    The rewrite took several years and brought mass of anger as D8,D2005,D2006 did not have tha quality the people were used to with D7.

    D2007 seems ok now.
    Since there is no Bold for Delphi 2007/2009, I am bound to D7.

  4. jpluimers said

    The single most important reason for me to use Delphi 2007 and up is that it makes me far more productive than Delphi 7, 6 or 5.

    Even just the far better capabilities of Delphi 2007 when debugging multiple-dlls compared to Delphi 5, 6, or 7 and you have an almost instant pay-back.

    To make me even more productive, I always add Model Maker Code Explorer (http://www.modelmakertools.com/code-explorer) and GExperts (http://www.gexperts.org).

    –jeroen

  5. Yogi Yang said

    I have to say that what you point out as limitations of D7 and its previous versions (I prefer and use D6 as well as D2006) IDE can easily be over come by using a few third party plugins like:
    – GE Expert (for searching for a components)
    – I forget the name of this plugin (as I do not use it) but changes the behavior of Delphi’s IDE so that we can get more space for designing as well as coding.
    – Code Rush
    – cnPack

    The IDE still does not support inline controls the best it can support is Frames. We can easily get something like this in older versions using a freeware Expert that will convert any form to a true VCL component which can be installed the IDE. (look in Delphi Super Pages to get this component).

    As for language part I still feel newer versions has not made writing code easier. It is still age old Pascal which was devised to force a developer to behave and program in certain way to build disciplined programmers.

    Even after all these years Switch does not support any other data types except Ordinals (or numerical values) where as other old as well as modern languages supports this in a grand way.

    Adding more Object oriented features does not mean that the language has become any better. I can bet that almost 80% of developers using Delphi as their prime language are not using the OO features introduced in newer versions of Delphi as all!

    It feel that by adding new OO part CG has managed to make Delpih more expressive. But actually the language (pascal) on which it is based on is already very expressive and easy to read.

    In fact all highly productive and critical Delphi based apps that I have seen are still being developed in D6 or D7 say for example:
    – Turbo Cash
    – osFinancials
    – avERP (this is truly a very large application with more than 150,000 lines of code)
    – Older version of RagTime (I think after version 4 they adopted C++)
    – Fast Stone Capture (this also seems to have switched to C++ in later versions)

    It is useless to pursue D6/7 developer to shell out money for purchasing newer version as they support features which we just do not use at all.

  6. aam said

    The components I need are not available for Delphi 2009, that breaking compatiblity stuff has newers version of Delphi sunk.

  7. Ken Knopfli said

    Actually, in terms of quality, the best Delphi version was D5.

    Sure, it was built for machines without the speed and RAM available today, but in it’s day it set the standard for ease of installation and use.

    • Oh absolutely – I was a huge fan of Delphi 5. To be honest, I had more crashes per day on Delphi 7 than I ever had on the much-maligned Delphi 2005. But 5 was as stable as they get.

  8. Morwath said

    Every time I fire up D7 I wonder how fast it is compared to D2007. The only real reason to use D2007 are Vista compatibility, and the only real reason to switch to 2009 is Unicode support – and generics when they will be fixed. Also, in D2007 localization is still broken, and its type library editor can easily mess up code (and it was almost totally broken in 2006). Most UI enhancements were already available in libraries like DevEx that shipped years before 2007/2009 and are already used by many programmers – thus has them already in D7.
    Build events are a MSBuild feature, and any serious Delphi developer was already using a build tool to build complex applications. And build events have issues too, for example they will use the dpr build config even if it’s overriden in MSBuild, thereby they are almost useless if you build outside the IDE.

  9. Shane Holmes said

    NOPE! We still all use Delphi 7 in our company and refuse to move up. SWe se no reason too. As long as the hardware, clients, and markets still allows us to write our Win32s, we will use D7.

    Although, we do own copies of both 2007 and 2009, there is no one here that likes either. After many, many years of using the Delphi 7 IDE – why would we want to relearn something new. The changing of the IDE was one of the worse moves they ever did.

  10. Xepol said

    Wow, I could not disagree with a number of your points more.

    The new IDE -> this is, in fact, why most people do not want to move forward. If you blended the new compiler with the older style IDE, I suspect the holdouts would fold in a hearbeat.

    As for how wasteful the old palette is? I find the new one wastes a LOT more screen space. No reason why the old one can not be filtered either. I find the space where the old palette used to sit on the screen is now just gray pixels. How does adding an extra palette save space when the space it previously used now goes unused again?

    Every other point is interesting, but it does not require the new IDE – They all could have been implemented with out a new IDE, which is the main thing people are avoiding (except perhaps the unicode jump that CG decided to implement in the TOTALLY wrong fashion)

  11. Junior/RO said

    Sorry, but D7 + ModekMaker Code Explorer (MMX) + CnWizards works very well for me. The refactorings of MMX are way better than those on the D2009 IDE.

    The IJclStringList (interface) from JclStringLists.pas (JCL) is better than the new TStringList from D2009.

  12. Peter said

    The Help in Delphi 200x is a horror. You can’t find anything. I hate to have open two IDEs Delphi 7 and Delphi 2009. So I stay on Delphi 7.

    Moreover Delphi 2009 is so slow because of the .net overhead that is used in some IDE functions.

  13. Class Helpers are not fully documented because THEY ARE NOT DESIGNED TO BE USED IN YOUR APPLICATIONS!

    iirc they were useful in meeting the objective of extending the VCL without introducing a breaking change but I think were originally designed to facilitate source compatability between VCL and VCL.NET applications.

    The documentation that DOES exist for them specifically states that they are not intended for general purpose use. The reasons for this become blindingly obvious when you consider how they work, the limitations they suffer from and the fact that USING THEM CAN BREAK OTHER PEOPLE”S CODE!!

  14. Bruce McGee said

    Nice list, and I have to agree.

    Since Delphi 7, with all of the the small (for..in loops, new Exit syntax, etc) and large (Unicode, generics, etc) changes (and everything in between), there have been fixes, improvements, additions and bug fixes to pretty much every aspect of the product. Even if you choose to exclude anything that could potentially come from third parties.

    http://stackoverflow.com/questions/305016/what-are-major-incentives-to-upgrade-to-d2009-unicode-excluded

    Here’s one I really like. Improved application performance.

    Let’s see. The compiler has seen a lot of work, including the Inline keyword (used in the VCL and RTL) and performance improvements for compiled code. Key RTL methods have been replaced with FastCode alternatives (including at least one compiler magic function). The FastMM memory manager is now included by default*. The VCL has had some performance improvements and with Delphi 2009, you don’t incur the implicit conversion penalty to and from Unicode when you call the Windows API. Don’t forget to turn off string checks if you don’t use C++. This isn’t a complete list, and more can always be done, but it’s not a bad starting point.

    Bottom line. Your applications get a performance improvement just by recompiling them in Delphi 2009.

    Cool.

    * Admittedly easy to do yourself. If you’re using an older version of Delphi, think about replacing the memory manager:
    http://sourceforge.net/projects/fastmm/

  15. Bruce McGee said

    Some other suggestions to proactively improve performance. I have a real problem with unnecessarily slow apps.

    http://stackoverflow.com/questions/1115421/how-to-increase-the-startup-speed-of-the-delphi-app

  16. LDS said

    The very fact that still pop up “why you should upgrade from D7” articles here and there demonstrates there were real issues with the latest releases of Delphi, and, even more, with Borland/CodeGear/Embarcadero product management.
    Instead of telling people why they should upgrade, they should ask themselves why people are still reluctant to abandon a release now seven years old.
    It looks clear that many perceived the new features not worth the price and effort of upgrading – especially when they invested in addons to fill the gaps. And it looks many perceived the new ide inferior to the old one, despite some needed improvements – there were clear mistakes in designing Galileo that will haunt the product for a while.
    What actual product management should really avoid is to tell people “upgrade because we have fixed bugs”. That’s what really drives many Delphi developers mad. Upgrades should bring new, powerful features. They shouldn’t be expensive service packs – moreover introducing whole new issues.
    What is more scaring, is that it looks nothing is changing in the actual approach. And, believe me – a 14 days trial won’t lure people into upgrading…

  17. Johanb said

    I think Codegear should re-release Delphi 7 for those who want more licenses, including me.

  18. […] Piece ·Tagged Delphi, delphi 7, drunken-philosophy, reasons-to-upgrade In my last post on why you really should upgrade from Delphi 7, I seem to have upset a number of people. Some were very angry, some were moderate. Some were […]

  19. Kerry Neighbour said

    For me the fact that I would lose Coderush is all the reason I need. I do run one project in D2010, and it is awful. It is like working one-handed. D7 with Coderush is the best thing since sliced bread.

    If only the newer IDEs had some real editor tools in them, then I would move on like a shot.

    The Subversion integration in XE2 might be extremely useful – that might finally force me over…

  20. kerry said

    Disagree. I would lose Coderush, so for me it is not an option. Coderush is the single best enhancement to Delphi I have ever seen. I cannot work without it. End of story.

RSS feed for comments on this post · TrackBack URI

Leave a comment