Maintenance and bug fixing
Finding and fixing bugs, analyzing crashes, adapting the application to new Windows versions. Also in someone else's code and without the original developer.
- Bug analysis
- Legacy code
- Windows 11
Delphi development · Delphi 1 to 13 · VCL and FireMonkey
We keep Delphi applications running, extend them and bring them to Delphi 12 or 13: from Delphi 7 or 2007, through the switch to Unicode and 64-bit, to replacing the BDE. We have been working with Delphi since 1996, including when the original developer is no longer around.
Services
Whether it is a single bug fix or a move to the current version, we start where your application stands today.
Finding and fixing bugs, analyzing crashes, adapting the application to new Windows versions. Also in someone else's code and without the original developer.
Extending existing applications with modules, reports, interfaces or database functions that fit the existing architecture.
From Delphi 5, 7, 2007 or an XE version to the current release: getting the project to compile in the new version, replacing components, working through warnings and verifying the behavior.
Strings have been Unicode since Delphi 2009, and 64-bit has been available since Delphi XE2. We find the places where this changes the behavior and convert them in a targeted way.
Replacing the BDE and Paradox tables, moving data access to FireDAC and migrating the data to a current database server such as MS SQL Server, Oracle or MySQL.
Project-based work in your team, remotely from Germany, when you lack Delphi experience for maintenance, a migration or a new module.
From your version to Delphi 13
The effort depends mainly on which version you are coming from. A first orientation:
| Starting version | What typically needs to be done |
|---|---|
| Delphi 1 | 16-bit programs no longer start on 64-bit Windows. The business logic can usually be kept; the user interface and system calls are rebuilt. |
| Delphi 2 to 2007 | The switch to Unicode is the biggest step. In addition, there are components without a current version and often the BDE, which has not shipped with Delphi since XE7. |
| Delphi 2009 to XE | Unicode is done. What remains are current components and, if desired, the move to 64-bit. |
| Delphi XE2 to 10.4 | Usually manageable: current components, clean display on high-resolution screens and new compiler warnings. |
| Delphi 11 and 12 | Usually a small step: recompile, update components, test. |
From practice
Both examples compile in the new version and still behave differently than before. These are exactly the places we look for in the source code before the migration.
In Delphi 7 a character was one byte. Since Delphi 2009 a character takes two bytes (UTF-16). The old code still compiles, but it copies only the first half of the string, with zero bytes in between. Files, interfaces, checksums and encryption are affected.
// before: one character = one byte SetLength(Buffer, Length(S)); Move(S[1], Buffer[0], Length(S)); // after: state the encoding Buffer := TEncoding.ANSI.GetBytes(S); // or TEncoding.UTF8, depending on the other side
In 64-bit code a pointer is eight bytes, while an Integer stays at four. Storing an object in an Integer cuts off the upper half of the address. The error only shows at runtime, often as an access violation somewhere else entirely.
// before: object kept in Tag CustomerEdit.Tag := Integer(Customer); Customer := TCustomer(CustomerEdit.Tag); // after: NativeInt fits a pointer CustomerEdit.Tag := NativeInt(Customer); Customer := TCustomer(CustomerEdit.Tag);
Approach
Your application keeps running until the new version demonstrably does the same.
Recording the version, components, database access and the places that are critical for Unicode and 64-bit. The result is an effort estimate with risks and order of work.
Compiling the project in the target version, replacing or updating components, working through errors and warnings.
Comparing old and new versions with real data: calculations, reports, files and interfaces. As ISTQB Certified Testers we plan these tests systematically.
Introduction on your schedule, with parallel operation if desired. Afterwards we take care of maintenance and further development.
Why NordZentrum
From Delphi 1 to Delphi 13, with VCL and FireMonkey. We know the quirks of the old versions because we have worked with them.
Original developer no longer available? We work our way into grown code, document it and build on it reliably.
As ISTQB Certified Testers we check that the new version does the same as the old one before it goes live.
With Claude Code we read and document large legacy code bases faster and find critical places more precisely. We review and take responsibility for every change ourselves.
FAQ
Step-by-step migration is usually cheaper and safer, because the business logic built up over the years is preserved and the application keeps running in the meantime. A rewrite is more likely to pay off if the requirements have changed fundamentally. After reviewing the source code, we can compare both options reliably.
That depends mainly on the size of the code, the components used and how often strings are treated as bytes. After the review you receive an effort estimate with the individual steps.
Many widely used components are available in current versions. Where a vendor no longer exists or the source code is missing, we replace the component with a maintained alternative or with our own code.
The BDE has not shipped with Delphi since XE7 and is no longer supported. We move data access to FireDAC and migrate the data, for example from Paradox tables, to a current database.
Not necessarily: 32-bit applications also run on 64-bit Windows 11. The move pays off mainly if the application needs a lot of memory or has to load 64-bit libraries (DLLs) and database drivers.
The VCL is limited to Windows. With FireMonkey, Delphi applications also run on macOS, iOS and Android. This means rebuilding the user interface; the business logic can usually be kept.
Yes, on a project basis and remotely, mostly for clients in Germany.
Contact
The Delphi version, the approximate size and what should change are enough to start with. The first assessment is free of obligation.