A year and a half ago I was tasked with converting my employers large suite of applications from BCB6 (Borland C++ Builder 6) to BDS 2006. In a word it was ‘aweful’ — that is full of miserable awe.
There were many bugs in BDS 2006 and technical challenges were enormous. I had to convert Quick Reports (a deprecated pascal based reports engine) and oldversion DevExpress Grids (a pascal based set of UI components). Along with that we switched from BDE (Borland Database Engine) to ADO (Microsoft’s touted new data access platform).
The conversion from BDS 2006 to BDS 2007 however was a relaxing experience. The hardest part was getting CeeFIT (see http://ceefit.woldrich.com/) to compile and work as the C++ conformance is a little more strict in 2007. It took 2.5 days to convert everything, which was unbelievable! So what is so good about 2007?
– MSBuild (basically Microsoft’s version of ant, a complex build system)
– No more internal compiler errors, and finally a way to build our entire product suite from commandline without needing the IDE!
– A MUCH FASTER compile time, saving lots of time to code and not wait for the compiler.
– Vista problems in our products “went away” just by compiling the code in 2007. (We had ugly UI and unreadable forms when compiled in 2006).
– Our products seem to run faster (perhaps an improvement in the FastMM memory manager?)
What problems did I have?
– Had to change some code to conform to the more strict C++ compiler (was fairly minimal).
– On some dev boxes we got CRAZY debugger crashes (random) when trying to run in debug mode. This was due to a conflict with the driver used for people who have a logitech camera, not sure whose fault it is? (and a solution can be found by googling, Nick Hodges has a camtasia showing the problem and the fix)
– A bug exists in the new project files (in our case .cbproj) in the section <BRCC_UserSuppliedOptions> in that paths with spaces in them are not surrounded in double quotes at compiletime (whereas other sections are surrounded automatically by the compiler). The fix here is to surround the items in double quotes like: “$(BDS)\include”
– As with other conversion you always seem to be required to edit your project files to make sure they reference the proper packages and libraries. We tend to rename packages to align with the IDE version we use to assist in parallel development with previous versions of our products, so you don’t get issues with the same package / dll found in the path creating problems.
– The memory requirements for 2007 seem to be greater, on one of my dev boxes I still only have 1 Gig of RAM which will cause your compile to send windows to the swap file and grind the compile time to a halt. Make sure you have AT LEAST 2 gigs of RAM.
*Note: All of these comments are based on 3 weeks of using BDS 2007, so I’m sure I have’t found all the issue / bonuses yet, but at the same point last conversion (bcb6 to BDS 2006) I was feeling hopless about the conversion, so everything has gone VERY well.
In summary, great job to Borland (now Codegear) they have done a fantastic job.