What I learned when converting a large BDS 2006 project to BDS 2007 (RAD Studio)

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.

3 Responses to What I learned when converting a large BDS 2006 project to BDS 2007 (RAD Studio)

  1. Hello Mark,

    I came across your blog by searching for CeeFIT compiling and noticed that you had to make changes for it to compile. I am using gcc 3.4.2 from cygwin.org and using the ant builder that is part of CeeFIT 1.1.5 distribution. I get compiler errors right from the start. I wonder if you have had any success compiling it using the GCC compiler.

    Any help you can offer or direct me to others that may help I would greatly appreciate it.



  2. Hi Mark,

    For starters, it’s really cool to see how you’ve fully intergrated God into every aspect. As a fellow Christian, I know that most of us, including myself, struggle to bring God to work with us, and to keep him as a focus throught the day. Your website has been a real encouragement to me.

    Anyways, I stumbled across this article you wrote about upgrading to BDS2007. Would you happen to have any available documentation about your nightmarish upgrade from C++ Builder 6 to BDS 2006? I am in the middle of making this upgrade right now. I won’t get into why I’m upgrading to software that is no longer supported. I seem to have made all the obvious changes in my software such as upgrading libraries and such, but I’m starting to realize that possibly some built in Borland components may not transfer well? At the moment I have a theory that the Form application does not have support, because I cannot build it at runtime. I won’t ask you to help me solve my bugs, but if you are willing to share any documentation you might have on the upgrade, it would be greatly apprecitated.



  3. I have no documentation but feel free to email me any questions and I can try to help.

    God Bless.