[HN Gopher] Mastering Delphi 5 2025 Annotated Edition Is Now Com...
___________________________________________________________________
Mastering Delphi 5 2025 Annotated Edition Is Now Complete
Author : mariuz
Score : 129 points
Date : 2025-03-24 15:40 UTC (7 hours ago)
(HTM) web link (blog.marcocantu.com)
(TXT) w3m dump (blog.marcocantu.com)
| markus_zhang wrote:
| Interesting. Is it still runnable on Windows 10/11? I guess it
| would be still fun to use Delphi for personal projects.
| okanat wrote:
| 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 wrote:
| 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".
| magicalhippo wrote:
| 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.
| marcocantu wrote:
| I rebuild a large number of demos with no change. Well,
| the UI looks date, you need to manually enable HighDPI
| (one checkbox away), do a few tweaks. The IDE plugins,
| those are broken. And some libraries don't ship any more.
| bruce511 wrote:
| >> I would be surprised if Delphi 5 ran without a hitch
| on Windows 10/11
|
| I'd be surprised if it didn't. Not Delphi, but I've been
| helping a client update their Windows program, from a
| compiler which shipped in 1998. Their program, with that
| compiler, runs just fine on Windows 11.
|
| The backward compatibility of the Win32 API is such that
| I regularly use programs last compiled 20 years or more
| ago.
| magicalhippo wrote:
| Microsoft sure has done a great job, but I have
| experienced some issues around Program Files and registry
| virtualization, along with UAC.
|
| I suppose if you run it as admin and/or install it
| outside Program Files it'll make it a lot less
| troublesome.
|
| So, not unexpected, but I'd still be mildly surprised.
| chungy wrote:
| > some issues around Program Files and registry
| virtualization, along with UAC.
|
| Now that's rattling a thing in my brain. I recall
| disabling UAC was one of the more consistent ways to get
| Delphi 6 to even _run_ on Windows 7, and even then it
| wasn 't a guarantee.
|
| Yeah, I had the displeasure around 2009-2011 of trying to
| get an old IDE version running on then-current versions
| of Windows, with multiple Vista and 7 computers in the
| office. It ran fine on Windows XP, but newer OSes were
| not so lucky.
|
| Perhaps the solution was to purchase a newer Delphi, but
| that avenue wasn't sought after.
| tracker1 wrote:
| Yeah... I saw a lot of poorly written apps using
| localized data in the application's directory, when they
| started locking down Program Files, all kind of bugs
| started to pop up. I don't blame MS much, they had some
| compatibility shims in place, but it was still
| troublesome. Mostly blame the early app devs for not
| understanding separation of the application/libraries and
| the data the app uses/manipulates.
| jchw wrote:
| It's more hit or miss than you might think. If you're
| just using mostly basic parts of the Win32 API then it is
| basically about as solid as any backwards compatibility
| ever has been.
|
| The fall off occurs as you veer off into deeper holes:
|
| - Multimedia software and games tend to hit on areas of
| Windows where compatibility is far from perfect.
|
| - Even 32-bit software would sometimes have random Win16
| binaries, and those are not emulated; I don't _blame_
| Microsoft or anything, but they could support it if they
| wanted to. (Understandably, they do not.)
|
| - Software that uses truly obsolete Windows components
| may no longer work. AFAIK .NET Framework 1.1 hasn't been
| supported since Windows 8. Old ActiveX and COM components
| can also be a problem.
|
| This has led to some situations where you might actually
| have better luck running the old software under Wine and
| Linux than modern Windows, especially for some older
| games.
|
| It's not that Microsoft didn't do immense amounts of work
| here, but in practice there are some holes I've run into.
| magicalhippo wrote:
| > Even 32-bit software would sometimes have random Win16
| binaries
|
| InstallShield being a common one in that regard. So
| common that 64-bit Windows, which doesn't support 16-bit
| binaries, contains code to handle specifically[1]
| InstallShield and Acme 16-bit binaries[2].
|
| [1]: https://devblogs.microsoft.com/oldnewthing/20131031-
| 00/?p=27...
|
| [2]: https://learn.microsoft.com/en-
| us/windows/win32/winprog64/ap...
| badsectoracula wrote:
| 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
| markus_zhang wrote:
| Hey this is interesting. Did you write the rendering code
| in Delphi too?
|
| Did a bit of search, is it QuARK?
| badsectoracula wrote:
| Yes the rendering code is in Delphi too. It uses an
| OpenGL control i wrote some years ago[0] which include
| OpenGL bindings for Delphi 2 (i haven't tested later
| versions). The control is actually a conversion of one i
| made for Borland C++ Builder [1].
|
| It is not QuArK, though AFAIK QuArK was made in Delphi
| too. There have been a few other Quake editors made in
| Delphi, like the qED Quake Editor which was one of the
| earlier Quake editors (the author wrote a book about
| quake mapping too[2]).
|
| [0] http://runtimeterror.com/tech/dglvp/
|
| [1] http://runtimeterror.com/tech/bcbgl/
|
| [2] https://archive.org/details/unofficial-quake-level-
| design-ha...
| markus_zhang wrote:
| Thanks, I like your website BTW. It reminds me of the
| 90s.
| hnthrowaway0315 wrote:
| Man I love it. Back in 1999/2000 I was very into Quake
| mapping and Half-Life mapping. I didn't make any good
| maps but the community was great. I remember talking to
| other mappers on ICQ every night.
|
| I believe the community is still thriving.
| chungy wrote:
| As I recall, the installer seemed to complete fine, but
| the IDE itself had problems, and this was consistent on
| every Vista and W7 computer. Windows XP computers could
| run it without issue.
|
| It's been a long enough time that the details have left
| my brain, but the feelings of pain have not been
| forgotten :-)
| Zardoz84 wrote:
| Should. Visual Studio 6 / Visual Basic 6.0 keeps running on
| Windows 10/11
| gmueckl wrote:
| MS has actively maintained compatibility between the VB6
| runtime and Windows.
| theamk wrote:
| 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?
| Tomte wrote:
| Yes: "I've been creating a free to download edition of my
| classic "Mastering Delphi 5" with footnotes indicating what is
| different today"
| marcocantu wrote:
| 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!
| FeistySkink wrote:
| 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.
| okanat wrote:
| 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 wrote:
| 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 wrote:
| 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.
| pjmlp wrote:
| 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 wrote:
| > 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 wrote:
| 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.
| Ao7bei3s wrote:
| 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.
| sigzero wrote:
| "easy UI development" Java never really got that part right.
| RDeckard wrote:
| > 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.
| theamk wrote:
| 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).
| starik36 wrote:
| VB6 (and its predecessors) didn't ship with windows resizing
| and alignment out of the box, but there were 3rd party
| components that did that nicely. This happened way before
| Java.
|
| https://web.archive.org/web/20160406102051/http://vbrad.com/.
| ..
| bluedino wrote:
| 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.
| mixmastamyk wrote:
| Layout managers were well established industry-wide by the
| 90s, which is where I started using them.
| theamk wrote:
| 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 wrote:
| 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).
| antonyl wrote:
| Isn't Retool (https://retool.com) like modern-day Delphi?
| kelafoja wrote:
| 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.
| johanstokking wrote:
| 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 wrote:
| > 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.
| Mister_Snuggles wrote:
| 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.
| wdb wrote:
| There was Delphi for PHP
| Mister_Snuggles wrote:
| 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.
| billy99k wrote:
| 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.
| LelouBil wrote:
| 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".
| burgos_thrw wrote:
| > I vagely remember seeing a Pascal book at my
| grandparent's).
|
| First time someone used "grandparent" and I could relate :-)
| michael-ax wrote:
| Congratz Marco!
| pjmlp wrote:
| Many thanks Marco for providing this.
| marcocantu wrote:
| 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
| fuzztester wrote:
| 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.
| WillAdams wrote:
| Is this applicable to:
|
| https://www.lazarus-ide.org/
| magicalhippo wrote:
| 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 wrote:
| I've used Lazarus a bit and it mostly replicates the APIs and
| experience of using Delphi in this timeframe
| jksmith wrote:
| 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.
| visarga wrote:
| I loved Delphi 1 ages ago but I won't fork thousands of dollars
| for a language.
| zerr wrote:
| 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.
| lproven wrote:
| > I won't fork thousands of dollars for a language.
|
| Lazarus:
|
| https://www.lazarus-ide.org/
|
| FPC:
|
| https://www.freepascal.org/
|
| Cost: $0.
| lwn wrote:
| 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.
| CodeCompost wrote:
| Delphi was nice, but the community was horrible to me,
| accelerating the move of my company to C#.
| t00 wrote:
| 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!
| earth-adventure wrote:
| 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!
| mikewarot wrote:
| I'm looking forward to using this as the missing documentation
| for Lazarus
| Havoc wrote:
| 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
___________________________________________________________________
(page generated 2025-03-24 23:00 UTC)