Years ago, I was contracted by one of the world's largest real estate company to help them upgrade / migrate several projects that used Delphi, Visual Studio and Crystal Reports, after they performed M&A on another similar company. During that period, I've written a number of progress reports on the upgrade and migration.

This post contains points from that consultancy. Some of the written points also reflected the constraints I was placed under, due to project requirements.

The objective of that project was to upgrade from Delphi 7 to Delphi XE2 (which was just released at that time), and Visual Studio 2005 to Visual Studio 2010.

The steps in the process were as follows:

  1. Obtain and install Delphi 7
  2. Obtain and install Visual Studio 2005
  3. Install all the necessary components to compile the Delphi projects.
  4. Investigate the components to check if there are XE2 equivalents.
  5. Update (or remove) Delphi 7-specific idiosyncrasies to XE2 equivalents.
  6. Update (or remove) operating system-specific idiosyncrasies (Windows XP/2000) that are no longer allowed, to Windows Vista/7 .

Some of the third party components, which are freeware, provided additional functionality and do not have source code. I had to disassemble the binaries in order to reverse engineer the original Delphi source that produced the same code (Years before, I had experience disassembling and producing the exact source code of a very large component set. Then years after, when I was able to examine the actual source, my reverse engineered source was the same as the original source!).

Also, some of the latest components (at the time of the project upgrade) did not support XE2, but supported up to Delphi 2010. In addition, there were multiple components providing duplicate functionality of other components.

As the project involved international members, I was also flown to their location to interview them as well, in order to figure out which sources each member was responsible for, and to integrate their sources into one coherent whole.