We work with Delphi from the old 32-bit versions up to the current releases, and with Lazarus and Free Pascal alongside them. The work is rarely in the language itself but in the jumps between versions: Unicode, 64-bit and third-party components. Below is what each step involves.
The three jumps that determine the work
How far an upgrade reaches depends not on the number of versions but on which of these thresholds lie in between.
- To Unicode (from Delphi 2009)
- The biggest break in the series: string became UnicodeString. Every place where characters were treated as bytes — file formats, network traffic, encryption — has to be reviewed.
- From 32-bit to 64-bit
- Needs attention for pointer arithmetic, inline assembly and external DLLs. A halfway step is often sensible: raise the version first, then go 64-bit.
- High-DPI and VCL styles
- An application that looks distorted or unreadable on a modern screen can usually be fixed through scaling settings and adjustments to the forms.
Third-party components
In practice these decide whether an upgrade goes smoothly, which is why we map them first, before anything happens to the code.
- DevExpress
- Actively maintained, so there is usually a version that matches your target Delphi. Worth checking for properties that disappeared between versions.
- TMS, including WebCore
- Current and broadly usable. WebCore is also the route through which existing Delphi code can run in the browser.
- QuickReport and FastReport
- QuickReport is the classic stumbling block in an upgrade. We usually replace it with a current alternative and port the reports.
- BDE, ADO and FireDAC
- The database layer is often the part that has to be replaced anyway. FireDAC is generally the destination.
Beyond Delphi itself
- Lazarus and Free Pascal
- Sit close to Delphi and are sometimes the better route, for instance when an application also has to run on Linux or when licence costs weigh heavily.
- Delphi for mobile
- Possible, but rarely the fastest route for an existing desktop application. We judge case by case whether it is worth it.
Not sure which version you are running? That can usually be derived from the project file or from the compiled application. Send us what you have and we will work it out.
More on this →