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 eloquent. Most of them were dead wrong! A few of the comments received I really should react to, but I think the volume justifies a follow-up post. This post done, I’ll take my head out of the hornet’s nest and leave Delphi 7 developers alone. For a while at least.
Update: I really meant to leave this topic alone, but only days after I posted this, the Delphi 2010 hype started in all earnest. I didn’t take part in the beta this time, so I was unaware of some of the new things coming out. Some pertained to this post, so I’ve added some extra comments. Also, I needed to correct/clarify a few thngs. The blue stuff will be my last update to this post.
First thing that I should clarify, is that I don’t work for Embarcadero/CodeGear/Borland and never have. In fact, if you google me, you’re bound to come across a number of instances where I have had a real go at them. Sometimes over documentation, sometimes over Quality Central reports with all the required info that stay open, sometimes about I-don’t-remember-what.
I wrote the post of my own volition, because I thought it needed to be said. Onward then…
The one gripe that some commenters have raised, is that of documentation. Here I have to say, they have a point. For quite a while I actually had the Delphi 7 help files on hand on my development machine and there is an IDE expert that you can download that will allow you to use the Delphi 7 help files directly from the newer IDE. The new help files are also available online though, and I find Google is often better at finding things that any table of contents is.
Speaking of the IDE, I noticed a pattern in the comments. Those who don’t use the new IDE, hates it. It reminds me of a story my father-in-law once told me. His grandfather only ever rode in a car once. And he endured it for about five minutes before he demanded to be let out. The reason? The car was noisy and walking is less bumpy on uneven roads. So long distances he covered with the bicycle and shorter distances he walked.
If you really can’t stand the new IDE, there are three things you need:
- The IDE expert for the old help files
- DDevExtentions has a lot of cool things in it. The only uncool feature it has is the old-style component palette. If you hate the new one, use that. Update: And Delphi 2010 includes a new, significantly upgraded version of the palette. So when that ships, you finally have a choice of which one to use. That should lay the debate to rest, although I have a feeling the new and very shiny IDE insight feature may overtake both the palette and the toolbox. At least for me.
- Undock the IDE windows, so you can have the old chaotic layout that you love.
These seem to be the major things people hate about the new IDE, and they are all perfectly solvable (breakable?). And don’t even try to tell me how slow the new IDE is thanks to .NET – it starts up a helluvalot faster than Delphi 7 ever did if you launch the Delphi personality only.
The next big gripe is that third-party tools can give you a lot of the same functionality. A few slight issues with that.
Here is a smorgasbord of the third-party tools that were mentioned – I don’t think I missed any, but you’re welcome to check that I didn’t cheat:
- GExperts is fantastic but has not been updated at all since October 30, 2008. That is almost a year, folks. And those where compatibility and the first new expert for a while. A quick glance at the change log shows that the last significant version (1.3) came out almost four years ago. You’re right, absolutely the kind of thing you should depend on – a tool with very little support or progress in four years. Update: I don’t personally use GExperts anymore, in part because a lot of its best features are included in the newer IDE. But a lot of people still get a lot of value from it and it is of course available for Delphi 2009. The point here was that “I use GExperts” make a lousy excuse for not upgrading. Also, I’m told the support is really quite outstanding.
- But it gets worse. Someone actually mentioned Bold. Note that I didn’t link the URL, because BoldSoft doesn’t seem to even have it listed on their site anymore. In fact the latest relevant link I could find was this one, where it is explained that development stopped back in 2002 already! I know it may have been valuable back when you still lived with your mother (or had milk teeth), but your continued dependence on an extinct product is very dangerous indeed.
- Code Rush is fabulous, as is almost anything from DevExpress. As with almost anything from DevExpress it is also fabulously expensive. And it only improves the editor. And did I mention the Delphi version is extinct? Yeah. Or perhaps it is a typo on the website, but it is described as a “powerful Visual Studio® .NET add-on that…” blah blah blah.
- I have honestly never heard of cnPack before. It has actually been updated in the last couple of months and it may very well be enormously capable – I don’t know. I suspect it may be a tad dated though, given that they still link you through to bdn.borland.com. Surprisingly, that link still works although perhaps someone should notify them Borland no longer has anything to do with Delphi and may in fact now have a preference for Cobol. On second thought, just leave it. Perhaps they’re happy that way.
- JCL. OK, first: I don’t like JCL, even though lots of other people do. But you do know it is available for Delphi 2009, don’t you?
- ModelMaker Code Explorer. Also available for Delphi 2009.
Third issue is about the new features.
Apparently, “Class Helpers are not fully documented because THEY ARE NOT DESIGNED TO BE USED IN YOUR APPLICATIONS!” And also “The documentation that DOES exist for them specifically states that they are not intended for general purpose use.” Uh-huh? Let’s double-check the documentation, shall we? The initial intent of the language feature was to provide compatibility between Delphi Win32 and Delphi.NET. They did this by providing language support for the Decorator pattern. The notion that class helpers must not be used have died out along with other such relics, like the belief that overloaded functions are too dangerous to be allowed in the language. Update: Yes I am aware that the link I supplied still mentions that it was meant for platform-RTL binding and should not be used in general designs. Three points here: First, it is documented just fine. Second, I never said it is the perfect way to extend classes that you can modify. You simply wouldn’ use it in the place of inheritance or simply adding what you want. It is a technique to extend classes that you cannot modify. I’ll post a more about that once the Delphi 2010 hype machine has quieted down a little. Third, the help entry text dates from at least Delphi 2005 and was superceded by this famous post which shows that even within CodeGear/Embarcadero the opinion has shifted. Delphi 2007’s GlassFrame property is in fact a fantastic example of one common use case for class helpers. And its use had nothing to do with .NET runtime compatibility.
And some complaints about how badly generics work. Funny, I use them whenever they make sense and have had only one real issue with them and that is a compiler bug unrelated to generics. Perhaps someone would like to check if the bug exists in Delphi 7?
Lastly, some people complain about things like strings in case-statements. Which of course you had in Delphi 7. Errr… wait, there is something wrong with that last sentence. Ditto for complaints about Delphi 2009 features that are not as well implemented as in Visual Studio. If Delphi 7 didn’t have them, the argument is flawed.
Lots of positive comments also, the best of which highlighted several big benefits that I didn’t even think of.
Give the newer Delphi versions a try. Not for a day, but for the next real project you tackle. I bet you’ll learn to like it very quickly.
Update: Changed the ending, because one of the posters (quite rightly) took issue with it.