Solve With Software

Delphi application modernisation

Delphi is unusual among the systems Solve With Software takes over, because the language is still alive: Delphi 13 is current, and an application from Delphi 7 can in principle be brought up to it. So the first decision is whether to stay in Delphi and modernise, or to leave it for .NET or the web in stages. What usually forces the decision is the data layer: the Borland Database Engine, deprecated for two decades and unpatched since 2002, is still underneath most of the old Delphi systems we see.

Book a free consultation

Free · 1 hour · no obligation

Where Delphi stands

Alive, and owned by Embarcadero, who release a new version most years and support upgrading a project from any earlier one. That's the difference from VB6 or FoxPro. A Delphi application isn't stranded by its language.

It's stranded by what surrounds it. Most old Delphi business systems use the Borland Database Engine for data access, and the BDE was deprecated around 2000, has had no security updates since 2002, and hasn't been part of the Delphi installer since XE8. Applications from before Delphi 2009 aren't Unicode, which matters the moment a customer's name has an accent in it. Third-party VCL components from the era often have no current version, or no findable licence. And the developers who wrote Object Pascal for a living are, like VB6 developers, retiring.

So a Delphi system usually runs fine and can't be built, or can be built and can't be changed safely, or can be changed and only by one person.

What we usually find inside

Readable code. Object Pascal ages well. The forms are in DFM files that describe every control, the logic is in units that can be followed, and the business rules are usually where you'd expect them.

The problems are underneath: BDE aliases pointing at Paradox tables or an old SQL Server driver, string handling from before Unicode, components that only compile on a Delphi version nobody has installed, and a build that lives on one machine.

Stay in Delphi, or leave it?

Stay, and modernise in Delphi. Move the project to a current Delphi version. Replace the BDE with FireDAC, Embarcadero's current data access layer, and move Paradox or dBase tables to SQL Server. Convert to Unicode. Replace or update the third-party components. The application keeps its shape and its screens, and it's supportable again. This is the right answer when the application does its job, the business wants it as it is, and someone can be found to maintain Delphi.

Leave, in stages. Modern screens over the same data, one process at a time, in .NET or on the web, with the Delphi application still running against the same SQL Server database until the last process has moved. The right answer when the business needs the system outside the office, when the Delphi developer pool is the risk, or when the application's shape no longer fits.

Both, in that order. Often the best path: stabilise in Delphi first (FireDAC, SQL Server, a build that works), which makes the data shareable, then migrate processes out over time. The stabilised Delphi application becomes the fallback rather than the problem.

The assessment reads the code and prices each path as a fixed number.

What moving off the BDE involves

The stage almost every old Delphi system needs first, whichever path follows.

  1. Inventory the data access. Every BDE component, every alias, every Paradox or dBase table, every SQL statement.
  2. Move the tables to SQL Server where they're still in Paradox or dBase, with the data reconciled.
  3. Replace the BDE components with FireDAC, with tooling doing the mechanical part and a person doing the rest.
  4. Convert to Unicode at the same time if the project predates Delphi 2009, because string handling changes anyway.
  5. Test against a copy, then run in staging alongside the old build on the same data before switching.

At the end the application looks the same to its users and no longer depends on a component deprecated two decades ago.

Your data

If it's in SQL Server already, it stays there and both old and new can share it. If it's in Paradox or dBase tables, it moves once, to SQL Server, as the first stage. Either way it never meets a change until the change has proven itself somewhere else: tested on a copy in a test environment, then run in staging with the data reconciled, before anything connects to live.

What it costs

The assessment is from £395 + VAT, sized on a free one-hour consultation, with an exact price before you commit. For a Delphi system it establishes the Delphi version, the data layer, the components and whether the project builds, then prices staying and leaving as fixed numbers. What drives the price and the payment terms each have a page.

The risks of waiting

The BDE, mostly. A data layer unpatched since 2002 on a network is a risk that doesn't announce itself. After that, the usual ones: a build that only works on one machine, components whose licence can't be found, and a developer pool that shrinks each year. None of them has a date. All of them get worse.

How we approach it

Stabilise the data layer first, then decide the rest on evidence. Marc Allington has worked in Delphi and in the .NET and web stacks it usually moves to, so both sides of the decision are familiar. Everything we build runs on open, widely used technology, in your own accounts, with full source code and ownership transferring to you on final payment.

The technical checklist for a Delphi takeover

CheckWhy it matters
Delphi version, and does the project build on a current machine?Sets the distance to a current version and whether stabilising in Delphi is realistic.
Data access: BDE, ADO, dbExpress, FireDAC, and which tables are Paradox or dBaseThe BDE is the first thing to replace; Paradox tables are the first data to move.
Unicode or not (before or after Delphi 2009)Decides whether string handling has to be converted, which touches most of the code.
Third-party VCL components, versions and licencesThe usual reason an old project won't compile; each needs a current version, a replacement or a rewrite.
Where the business rules live: units, form events, stored proceduresRules in the database are shared for free; rules in form events have to be extracted before any process moves out.
Reports and exportsOften a separate reporting component with its own runtime and licence.
Integrations: what calls it, what it callsEvery one is a dependency to keep working through any change.
Source control and buildUsually a folder on one PC. The safety net comes first.

Each answer goes into the report with its consequence for staying or leaving and a fixed price for each.

Questions

What people ask before they book.

Is Delphi a dead language?

No. Delphi 13 is current, Embarcadero releases regularly, and an old project can be upgraded. What's dead is the BDE underneath most old Delphi systems, and the pool of developers who'll work in Delphi is shrinking. Those two things drive the decision more than the language does.

Usually, with work. The data layer and the string handling change, and every third-party component needs a current version or a replacement. The assessment establishes how much of that applies to yours and prices it.

It's one of the two reasons, along with the business needing the system somewhere Delphi can't go, such as a phone. If the application does its job and can be stabilised, staying is cheaper. If nobody can be found to maintain it, stabilising it and migrating out in stages is the safer course.

It's the first job. Paradox tables and the BDE go together, and both are past their end. The data moves to SQL Server, reconciled, and after that both the Delphi application and anything new can share it.

It depends on the version gap, the data layer and the components, which the assessment measures. The shape is the usual one: the data layer stabilised and the build working within about six weeks, then the next decision, each stage priced before you commit.

Start with a free consultation

An hour on your system, online or by phone. From there we size the assessment, from £395 + VAT, and give you an exact price before you commit.

Want the numbers first? See how pricing works.

Written by Marc Allington, founder. .