Skip to content(if available)orjump to list(if available)

Mastering Delphi 5 2025 Annotated Edition Is Now Complete

FeistySkink

I feel like Delphi, along with maybe VB6 and WinForms, have been the pinnacle of easy UI development, and things have gone significantly downhill since then. Especially on the web side, where even a single view sometimes requires having multiple unrelated dependencies (packers, builders, transpilers, etc.), often implicitly-configured to produce output, in head-space. And due to this dependency hell, when porting a project like this to a new platform, or just getting it to run, a slight change in the environment silently breaks the build.

theamk

Agree, Delphi was extremely nice way to do UI development.. I've made many small GUIs for everyday tasks back when I was using it.

Unfortunately "dependency hell" was very real -- it was super-easy to download ActiveX controls, install on the system, and then depend on them in the apps. Worse, Windows had a single ActiveX database per computer, and an control installed by a completely unrelated app would appear in the Delphi's palette, ready to be placed on a form. After having a few apps that would not work on friends' computers, I've mostly gave up on ActiveX components completely.. luckily third-party Delphi components were better - at least the compiled binaries would work. Source code still required system-wide install though...

If you think that "pip install", or "npm install", or even "apt-get install" on a Linux system is bad, you haven't seen what Delphi world was like. But to be fair, it's not really Delphi's fault - all Windows development was like that, full of bespoke settings that need to be set on each PC. For a complex software, it was normal to spend a few days just setting up the system so you can do initial build.

Another Delphi-specific issue was that by default forms were specified in pixels, and were hard-coded to specific font sizes; and color pickers had hardcoded colors (as opposed to system theme colors) prominently displayed. Unless you were very careful, it was very easy to make an app that could not handle different font or screen theme. And many apps that would benefit greatly from being resizable were non-resizeable instead, just because it was easier.

badsectoracula

FWIW ActiveX specifically was really more so that Delphi is able to use the Visual Basic stuff than something native to Delphi. Components made for Delphi specifically are (usually) compiled as part of the final executable without needing ActiveX.

In fact AFAIK ActiveX support in Delphi was implemented by generating a wrapper component that converted the ActiveX control stuff to what Delphi "naturally" speaks.

For forms, even in Delphi 2 you can use the "align" property in several controls to automatically position them inside a container using the top, bottom, left, right and client area. The areas also stack so you can, e.g., position several controls at the top area and you'd get an effect similar to what a VBox container would provide in other toolkits. Though the initial versions of Delphi did not have this available everywhere, it was added to various controls over time.

Later versions also added "anchors" so that you can drag-drop stuff visually to the form but also have them resize automatically based on the parent's size. Lazarus (sort of open source Delphi-like IDE) extended this to allow anchoring stuff related to other control (so, e.g., you could have a button's right side a few pixels from another button's left side and that button's right side be a few pixels from the container's right side, or have a label be placed at the middle of an input box, or other stuff like that).

lelanthran

> And many apps that would benefit greatly from being resizable were non-resizeable instead, just because it was easier.

Maybe, but Delphi had anchor fields that you could use to make everything resize nicely.

The problem with that time period was that most applications were designed to not be resizeable, including most of the ones that came with Windows itself.

We still have that - some of the Windows programs right now can't be resized (Thinking specifically of dialogs and windows for device manager->driver details, or explorer->options).

This wasn't a Delphi problem at all; it was a Windows problem because that was the convention on Windows at the time.[1]

[1] EDIT: s/Windows/GUI systems/g

eru

> This wasn't a Delphi problem at all; it was a Windows problem because that was the convention on Windows at the time.

And I don't think other GUI systems were all that much better. Eg MacOS has plenty of fixed size stuff right now.

int_19h

Native VCL components (which doesn't necessarily mean Delphi - could also be C++Builder) were always much more common in Delphi apps, from what I remember.

As far as COM and ActiveX, though, the ability to package them side by side in the app install folder and describe them using XML (in the app manifest) rather than registry has been around since WinXP.

johanstokking

And these programs, compiled in the ninetees, still run today on modern Windows with a functional UI. Microsoft, Borland and others then built developer tools and platforms to last. I think that cross-platform (including web) and touch changed the game because it wasn’t a simple and controlled ecosystem anymore. All of Microsoft’s successors to Win32 seem to be replaced sooner or later by something else, even in the Windows ecosystem, with Win32 still being supported. Let alone the web frameworks.

I also feel like this created a kind of positivity at the time rarely experienced today. I remember these Delphi conferences I used to go to as a teenager with my dad with many of the names Marco mentioned in his acknowledgments present, including himself. It was really rapid application development (RAD) without many of the stuff that parent mentions that brings so much struggle today (frontend) software development. People were having fun building software.

I’m happy to see that most of these names still seem to be able to make a living off Delphi. There’s probably still a lot of critical Windows enterprise software being maintained that needs consulting and support. Including my dad’s software he wrote 30 years ago which is still being maintained and used daily.

bluedino

> There’s probably still a lot of critical Windows enterprise software being maintained that needs consulting and support.

At my old company, it took 2 years and $2 million to re-write an application in Java. That's the cheapest project that Accenture would take.

So as long as you keep your legacy service contracts under that, you're fine. It might even be $3 million now with the new Java licensing terms.

mrweasel

I worked for a company, back in 2007, who had two products, one written in C++ and WxWidgets, and another written in Delphi. The Delphi product was an online publishing platform, running on IIS. They started hiring like crazy to create a new Java based platform, they must have spend millions only to scrap the whole thing a year or two in. I left just as that was happening, as did many others. Nobody wanted to go from working on the new hotness to working on the ageing Delphi platform. I think they kept it running for another five years or so, then pivoted to an online ad platform and then bankruptcy.

For online I don't think Borland, or whoever owned Delhi back then, really had the resources to keep up with everything else. Even today it's pretty expensive to buy the tooling from Embarcadero to keep projects alive, but probably cheaper and less risky that porting to another language.

Ao7bei3s

Delphi and Visual Basic 6 were definitely not the pinnacle of UI development.

For example, all layout was pixel based. Making windows resizable required much complex ad-hoc code, and internationalization was hard as well. Very early in my career, I have spent person months clicking through every single screen in a large desktop application to find words cut off due to words having different lengths (measured in pixel) in different languages. I knew what "Ok" and "Cancel" meant in half a dozen languages. At the time, Java was really breaking ground with container based layouts in Swing. Delphi and Visual Basic caught up only in the .NET era.

theamk

Don't know about VB6, but at least Delphi had Align property and TPanel/TGroupBox. Together, it allowed to make apps that handle resizing just fine without any custom logic.

(it has been a very long time, but I think those only handled internal composition and not overall window size.. so you'd still need some custom code if you wanted dialogs as compact as possible. But as long as you never missed setting Align property, you did _not_ have to manually resize every control for different text/font size).

int_19h

It's actually not entirely correct with respect to VB6. It did indeed use absolute layouts, but unlike Delphi with its pixel units, in VB everything was measured in "twips" (1⁄1440 of inch, or 1⁄20 of point). This would then be converted to actual pixels based on the DPI setting of the system.

RDeckard

> Delphi and Visual Basic 6 were definitely not the pinnacle of UI development.

> All layout was pixel based.

I'd say that was a very reasonable trade-off at the time, when most screens were somewhere between 640x480 and 1024x768 resolutions at 72 DPI. This simplified UI design sufficiently enough that VB/Delphi provided an optimal solution that, yes in hindsight, would most accurately be described as a "local maxima" for the environment and the time.

> Making windows resizable required much complex ad-hoc code

I remember there were ActiveX controls one could drop onto their form that would attempt to derive the layout based on initial positioning of controls, i.e. that a lower row of buttons should be anchored to the bottom of the window, while textboxes are took up a larger area would automagically resize with the window.

pjmlp

No it wasn't, this keeps being wrongly repeated.

Both had layout managers, they just required a bit more effort to use, and developers as we know are all lazy.

rudedogg

> For example, all layout was pixel based.

These sort of excuses always come up when Delphi and its insane productivity is mentioned. The same thing happens in conversations about how slow software has gotten.

High-DPI displays, internationalization, and accessibility are a pain but don't introduce enough complexity to hand-waive away the criticism.

Going a bit off-topic, but the browser is carrying around so many legacy concepts and ideas - it's a complete disaster - but it's the only option. The document object model is slow and weird to use to build reactive user interfaces.

We should demand something better. The browser is a local maximum as an application platform, and we should stop defending it.

baq

The browser is the OS. We can already put WASM on a <canvas> and ignore most of it, but turns out rendering text properly is hard.

sheepscreek

You can’t look at the language in isolation. Visual Basic was backed by the fantastic Visual Studio for development. That ecosystem was way more mature than Java ever got with Swing et al. IMO, if there’s one thing MS ever did right, it was how they nailed WYSIWYG GUI app development. Now they’re going backwards with the WinUI XAML crap.

jcelerier

> Now ... XAML

Microsoft has been pushing XAML for long enough that it could drink, drive and vote in my country

mattl

VB6 was its own thing separate from Visual Studio.

bluedino

I came from Visual C++/Basic world when I first got my Mac and dove into Xcode for the first time (2002? 2003?). Flexible layouts, connecting UI elements to datasources, localization...

Oh my was I amazed.

int_19h

Visual Basic could connect UI elements to data sources.

null

[deleted]

unixhero

Man month? Man year et cetera? Or has that term been renamed now?

Mister_Snuggles

I would love something like Delphi/VB6, but made for web development.

My day job involves working with PeopleTools, which basically does this. Draw forms (and build all of the supporting objects), save them, and they're accessible through a web browser. You don't need to know HTML, CSS, JS, etc (though it can help), and you can knock out a very based CRUD form in no time without writing any code.

I think the Microsoft Power Platform has features similar to this as well.

But neither of these options are very accessible to regular folks. Something that has the ease of development of Delphi, the deployment simplicity that comes with presenting the application via a web browser, and is accessible to regular folks would be incredible.

800xl

Xojo Web aims to do exactly what you describe.

https://xojo.com/products/web.php

I haven't really used it - I'm just a hobbyist coder who enjoys the VB6 style development of the desktop version of Xojo.

Mister_Snuggles

Wow, a quick cruise through the documentation suggests that this is EXACTLY the kind of thing I'm looking for!

I find myself waffling between "This is too expensive for me to play around with at home" and "Considering what this does, $399 really isn't that bad..."

wdb

There was Delphi for PHP

Mister_Snuggles

Is https://delphi.fandom.com/wiki/Delphi_for_PHP the one you're thinking of?

This is truly interesting, and the description on that wiki page suggests that it might be exactly what I'm looking for, but it seems like any concrete information about it has vanished.

kelafoja

I was so in love with Delphi 7 (didn't care much for Delphi 8, didn't try any version after). I don't think I've ever been more excited about a programming language/environment as when I was easily and quickly creating desktop applications with Delphi 7.

pjmlp

Including being high level, low level systems programming, and compiled ahead of time.

It is incredible that given its heritage, we have had to wait 25 years for .NET to finally provide a similar experience, and there are still some rough edges.

While it offered a way to perform AOT compilation, NGEN was only meant for fast startup and nothing else.

klipt

> It is incredible that given its heritage, we have had to wait 25 years for .NET to finally provide a similar experience

It's even the same person: Microsoft poached Anders Hejlsberg, creator of both Turbo Pascal and Delphi, to architect .net.

pjmlp

This myth keeps being repeated.

If anyone poached Anders Hejlberg, it was the ex-Borland friends working at Microsoft, under the usual referral program many companies have.

Actual history behind on what happened,

"Anders Hejlsberg: A craftsman of computer language"

https://behindthetech.libsynpro.com/001-anders-hejlsberg-a-c...

And yes that is why .NET not having proper AOT in 2001 was such a disappointment.

okanat

It is the result of cheaping out by the entire tech industry. Responsive design to support multiple resolutions and pixel density was extrapolated to use a single framework (HTML+JS+CSS) for every single device that exists. Except for a few, most businesses deploy Web based apps on browsers, desktop apps and mobile phones. Usually from the same monorepo. Add developer laziness and unnecessarily tight deadlines, we end up in the current situation.

tracker1

These days, I'd say Flutter is the closest alternative to something like VB6 or Delphi.

While I get the aversion, HTML+CSS is a pretty good combination for layout and there are efforts towards application tooling for other languages. That said, I don't dislike JS/TS nearly as much as some on here. It's a highly expressive language that's flexible enough to get things done in a number of ways. And yeah, the overhead is kind of crazy, especially when devs bring in massive dependency chains. As a whole, it's still one of the better options for getting an application "everywhere".

jksmith

One reason for this is when the big players move their business models over to taking your data and renting it back to you, there's no profit motive in pushing state-of-the-art ux when they just give their apps away to act like honeypots. MSFT gives their stuff away if you get on Azure. Atlassian charges 14 bucks a seat if you use their cloud. Lots of people who use this stuff have a laptop plus a bigger monitor their company bought to get their work done and it's like staring into an empty desert every day.

phendrenad2

Yep. I tried to find something similar. I tried Lazarus, Visual C#, Qt Studio. It's all a sad imitation of what we had with VB6 and Delphi.

lelanthran

> Yep. I tried to find something similar. I tried Lazarus, Visual C#, Qt Studio. It's all a sad imitation of what we had with VB6 and Delphi.

What's wrong with Lazarus, compared to Delphi?

phendrenad2

Lazarus is a good attempt to mimic Delphi, but it suffers from GUI jank. It uses the GTK GUI library, which in my experience is hard to get good performance out of. For example, when dragging things around it hitches and lags, instead of a smooth drag action. Another thing is the toolbar buttons are far too small for 2025. Maybe there's an option somewhere, but I couldn't find it. I also noticed that Lazarus has more buttons and options on-screen than Delphi did. This could be seen as "features" but it's also "clutter". And the extra features on-screen are not that useful, at least to me as someone who used Delphi a long time ago.

WillAdams

Is this applicable to:

https://www.lazarus-ide.org/

jksmith

Yep, I'll have a major rich gui workstation client/server package with basic D365 functionality coming out in I hope about 8 months. Win, Linux, hopefully Mac, and browser. The browser version is definitely legacy gui compared to the native versions, just because it's browser.

lelanthran

> Yep, I'll have a major rich gui workstation client/server package with basic D365 functionality coming out in I hope about 8 months.

What's D365?

magicalhippo

While not exactly 1:1, the vast majority should be.

The Free Pascal language used by Lazarus is very similar to Delphi's Object Pascal[1], and the Lazarus Component Library[2] is modeled to closely match Delphi's Visual Component Library.

[1]: https://wiki.freepascal.org/Object_Pascal

[2]: https://wiki.freepascal.org/LCL

fiddlerwoaroof

I’ve used Lazarus a bit and it mostly replicates the APIs and experience of using Delphi in this timeframe

earth-adventure

Really cool seeing you here Marco, as a teenager I got into Delphi and a part of that were your books (and some local Delphi forum). So thanks for being part of my 14 year old self spiraling into programming!

kopirgan

Borland was really a pioneer, made great stuff.. Sad they couldn't survive the Microsoft onslaught both in terms of product and tactics.

magicalhippo

They made some serious strategical blunders that were entirely unforced, and they did so at a critical time.

They drank every last drop of the enterprise kool-aid, and put Delphi on life support when spinnig it off failed[1], just as Microsoft got some .Net momentum going.

A lot of Delphi developers saw the signs and jumped ship during those years.

[1]: https://en.wikipedia.org/wiki/CodeGear

tomcam

It was mostly unforced errors. They tried to compete directly with Microsoft by buying word processors, databases, making a spreadsheet, etc. It was pretty clear to me even at the time.

Microsoft, on the other hand, is severely underrated for its ability to just not fuck up too often.

kopirgan

Yes it's interesting how many just did that.. Lotus, Novell. But iirc there were also some bare knuckle stuff involving C++ which was supposedly vastly better than VC but not given the right support as OS vendor.

theamk

the blog does not load to me, but is this really "Delphi 5"?

As in Borland Delphi 5 "Argus" released in August 1999 which introduced XML support and ADO databases?

marcocantu

Sorry, the blog has hiccups with large traffic... Yes, this is a book on Delphi 5 I made available for free... but with hundreds of notes indicating what has changed and what is still relevant. A lot of content is applicable to Delphi 12.3, released this month!

Tomte

Yes: "I've been creating a free to download edition of my classic "Mastering Delphi 5" with footnotes indicating what is different today"

lwn

This book was a great help to me years ago, and I still have a hard copy lying around. It's wonderful to now have a digital edition as well. I often look back on my time with the Delphi IDE with fond memories—though, thankfully, the bad ones seem to fade faster.

pjmlp

Many thanks Marco for providing this.

marcocantu

Thank you, it was a nice project, partially walking down the memory lane, but also checking how many features in that version of Delphi are still core today -- not just for the product but for the industry

jlampa

Memory lane, indeed! For me, as well - 25 years ago, I translated the Delphi 4 version of this book to Polish - I'm happy to see that both you and Delphi are still going strong!

fuzztester

Which Delphi version(s) can the book be used with?

I like Delphi and FreePascal and Lazarus and have used all of them a little, now and then, to create some small personal and paid business apps, Delphi in multiple versions with gaps between versions, from 2 onwards until the 'Berlin' version, IIRC.

And yes, thanks, Marco, for making this book available. I had bought a copy of one of your Delphi books around the 3 to 5 version timeframe, cannot remember which version right now.

Also, I had downloaded your Object Pascal Handbook a few years ago, which is a great resource, because we devs need to know our programming language well too, not just the IDE or the libraries, which is what some book authors focus on. Thanks for that too.

Need to set aside some time to do some more Pascal work for fun and profit.

visarga

I loved Delphi 1 ages ago but I won't fork thousands of dollars for a language.

lproven

> I won't fork thousands of dollars for a language.

Lazarus:

https://www.lazarus-ide.org/

FPC:

https://www.freepascal.org/

Cost: $0.

zerr

Agree. Making everything free (including the freedom, e.g. MIT license): SDK, cmdline tools, etc... And only charging for IDE/RAD environment would enormously boost the language popularity.

The same goes for Eiffel.

Havoc

Delphi 5 was awesome. From memory it was the last version where you could do jump to definitions on tons of the systems/built in code. 6 had that obscured somehow

markus_zhang

Interesting. Is it still runnable on Windows 10/11? I guess it would be still fun to use Delphi for personal projects.

lelanthran

> I guess it would be still fun to use Delphi for personal projects.

Like many of the other commenters here, I use Lazarus for Delphi projects in 2025 (Not just personal projects, but business projects too).

I don't really like the language too much, but:

1. Pascal (or Object Pascal) is very readable compared to almost anything else I've used[1]. I can come back to code from 2 years ago and spend a few minutes to context switch back into the language.

2. The language gotcha's are a small enough pain point that they are outweighed by the advantages of the type creation. I like being able to create a ranged integer type, which is then enforced by the compiler.

3. For most stuff, the majority of my logic is written using opaque types in C and then simply linked into the Lazarus GUI. I originally started using strong isolation and decoupling in C to enforce typing guarantees, but a side-effect of this is that it makes it exceptionally easy for other languages to reuse the program logic.

[1] I've been programming for money since the mid-90s, so you can assume that I've used almost everything that was mainstream (or top 10 in terms of popularity) each year since 1995.

okanat

Windows doesn't break backwards compatibility unless it is absolutely worse to keep it around. Think about old SMB protocol that caused security issues. The old Delphi programs continue to work since both the API design is more future-proof and Microsoft did a mind-boggling amount of work to keep ABI stable.

chungy

I recall some very nasty hacks and often-won't-work-at-all issues in trying to get Delphi 6 to run on Vista or Windows 7. Windows breaks backwards compatibility more often than "never".

badsectoracula

Was it Delphi or the installer? I do not have Delphi 6 but i have Delphi 2 and while the installer doesn't work out of the box (IIRC you can make it work with otvdm which can run 16bit programs on 64bit windows) you can simply just copy the files from the CD and it'll work.

Here is a screenshot from ~5 years ago when i was playing around writing a Quake 1 level editor in Delphi 2 under Windows 10[0] (i switched to using Linux as my main OS soon after and converted it to Lazarus[1]).

[0] https://i.imgur.com/I48gyMv.png

[1] https://i.imgur.com/7MSH98p.png

magicalhippo

I would be surprised if Delphi 5 ran without a hitch on Windows 10/11.

On the other hand, I'd also be surprised if the code couldn't be ported as-is, with just some minor tweaks if any, to the latest Delphi release (released this month).

The transition to Unicode strings was a breaking change that did have some impact, but if the code used string manipulation routines instead of direct byte manipulation it should work without any change.

Zardoz84

Should. Visual Studio 6 / Visual Basic 6.0 keeps running on Windows 10/11

gmueckl

MS has actively maintained compatibility between the VB6 runtime and Windows.

null

[deleted]

CodeCompost

Delphi was nice, but the community was horrible to me, accelerating the move of my company to C#.

t00

I have exactly opposite experience, Delphi was awful UI, verbose language experience, with hops and tricks and a ton of Win32 rendering to do simple controls like a ComboBox with checkboxes. Yet the community was brilliant, always helpful and SO questions answered the same day!

tomcam

I’m a bit surprised by that! Can you tell us a little bit more?

mikewarot

I'm looking forward to using this as the missing documentation for Lazarus