top | item 43462299

Mastering Delphi 5 2025 Annotated Edition Is Now Complete

207 points| mariuz | 1 year ago |blog.marcocantu.com | reply

115 comments

order
[+] FeistySkink|1 year ago|reply
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|1 year ago|reply
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.

[+] johanstokking|1 year ago|reply
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.

[+] Ao7bei3s|1 year ago|reply
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.

[+] Mister_Snuggles|1 year ago|reply
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.

[+] kelafoja|1 year ago|reply
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|1 year ago|reply
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.

[+] okanat|1 year ago|reply
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.
[+] phendrenad2|1 year ago|reply
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.
[+] ilirium|1 year ago|reply
I was several times required to build simple web apps, and it wasn't hard. I used Python, Flask, Jinja2, Bootstrap, and maybe one or two functions from jQuery for AJAX. It was very easy, and I know only Python and basic HTML and CSS. I don't know any JS/TS because I'm a Computer Vision Engineer.

These web apps show tables with data, images with figures, and some controls to request calculations or data from a server. jQuery is used to update the drop-down list according to previous choices.

[+] Jzush|1 year ago|reply
Indeed, if you attempt to look for modern windows/mac UI development tools it's either Visual Studio/C# or nothing. It's like development in that direction has ceased. Modern languages require complex tooling to get from zero to a UI, IE Rust/Go/Python, etc.
[+] billy99k|1 year ago|reply
I remember a product called PHP builder, that was out for awhile. It was supposed to make it easier to create and deploy PHP apps.

It failed within a year or two.

[+] wejick|1 year ago|reply
Is there kinda gui builder for web?
[+] mattl|1 year ago|reply
Interface Builder for NeXT stuff let you build a UI and test it quickly
[+] JodieBenitez|1 year ago|reply
I'm not going to minor the merits of Delphi, but this...

> Especially on the web side, where even a single view sometimes requires having multiple unrelated dependencies (packers, builders, transpilers, etc.),

... is only true if you jumped on the SPA bandwagon. Things don't have to be this complicated.

[+] LelouBil|1 year ago|reply
I have barely 2 years of experience in software development, so I wasn't around doing Delphi and stuff (I vagely remember seeing a Pascal book at my grandparent's).

However I feel like the current paradigm of declarative ui, with automatic re-render, like React (and what I actually use: Compose Multiplatform) is very good for producing maintainable applications and encourages UI decoupling.

I agree that the dependency hell and project setup parts on the web are horrible, but I wouldn't say it's part of "UI Development".

[+] WillAdams|1 year ago|reply
Is this applicable to:

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

[+] jksmith|1 year ago|reply
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.
[+] fiddlerwoaroof|1 year ago|reply
I’ve used Lazarus a bit and it mostly replicates the APIs and experience of using Delphi in this timeframe
[+] earth-adventure|1 year ago|reply
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|1 year ago|reply
Borland was really a pioneer, made great stuff.. Sad they couldn't survive the Microsoft onslaught both in terms of product and tactics.
[+] magicalhippo|1 year ago|reply
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|1 year ago|reply
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.

[+] theamk|1 year ago|reply
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|1 year ago|reply
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|1 year ago|reply
Yes: "I've been creating a free to download edition of my classic "Mastering Delphi 5" with footnotes indicating what is different today"
[+] lwn|1 year ago|reply
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|1 year ago|reply
Many thanks Marco for providing this.
[+] marcocantu|1 year ago|reply
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
[+] visarga|1 year ago|reply
I loved Delphi 1 ages ago but I won't fork thousands of dollars for a language.
[+] zerr|1 year ago|reply
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|1 year ago|reply
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|1 year ago|reply
Interesting. Is it still runnable on Windows 10/11? I guess it would be still fun to use Delphi for personal projects.
[+] lelanthran|1 year ago|reply
> 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.

[+] Zardoz84|1 year ago|reply
Should. Visual Studio 6 / Visual Basic 6.0 keeps running on Windows 10/11
[+] okanat|1 year ago|reply
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.
[+] CodeCompost|1 year ago|reply
Delphi was nice, but the community was horrible to me, accelerating the move of my company to C#.
[+] t00|1 year ago|reply
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|1 year ago|reply
I’m a bit surprised by that! Can you tell us a little bit more?
[+] mikewarot|1 year ago|reply
I'm looking forward to using this as the missing documentation for Lazarus