The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Delphi’ Category

Delphi 10 and up install notes

Posted by jpluimers on 2025/06/18

I try to keep an eye on older Delphi versions as, despite lacking features of newer versions, they do not suffer from issues (hi-dpi, language server, refactoring, stability).

Some notes below.

Tools to always install after Delphi

Install in this order so that GExperts gets the Alt-X menu shortcut and MMX the Alt-M menu shortcut.

  1. GExperts
  2. MMX (Model Maker code eXplorer)
  3. Project Magician
  4. TestInsight

Then download at least these libraries:

Delphi 10 Seattle requires .NET 3.5

You’d think the easiest to install it is through Chocolatey via [Wayback/Archive] Chocolatey Software | Dot Net 3.5 3.5.20160716

choco install dotnet3.5

This fails (Windows 11 is lacking wmic.exe)

The solution in Deploy .NET Framework 3.5 by using Deployment Image Servicing and Management (DISM) | Microsoft Learn still works (and still takes a long time, even on fast hardware with a fast internet connection):

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All

License manager fails to import registration .txt file

It loads the .txt file, but after closing the license manager it is not really imported.

Cause: you renamed the .txt file so that it contains more readable meta-information in the filename.

Solution: put the license file into a directory that has a readme.md file with the meta-information (like computername: that is what the license binds itself to in the online registration wizard).

This brought me an aha moment, as I had encountered it in the past and solved it, but forgot to make a note of it.

So this time, there was no need to follow the steps in either of these:

Delphi 12 still has the same icons for all 3 personalities

Icons in C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe

Icons in C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe

By now, I had hoped the devteam had finally ensured there were three different icons for the personalicties:

  • Delphi
  • C++ Builder
  • RAD Studio

False hope:

Icons for Delphi 12, C++ Builder 12 and RAD Studio 12: they are all the same.

Icons for Delphi 12, C++ Builder 12 and RAD Studio 12: they are all the same.

And very easy to fix as bds.exe includes all the needed icons and more – see image on the right.

Images:

Delphi 12.1 offline installer bugs not fixed in Delphi 12.2

[Administrator] RAD Studio 12

Java JDK not found on this machine. Please, install Java JDK before.

OK

image

image

If I ever get this to work, I want to use the OpenJDK; some links for that:

This was introduced in Delphi 12.1:

…………………………………………………………………………………………………………………………………………………………………………………

In addition, these Delphi 12.0 installation issues have not been fixed in Delphi 12.2 either (but the C++ Builder path issue seems fixed in the 12.2 Path 1 inline ISO of the off-line installer):

  • [Wayback/Archive] Installation Notes – RAD Studio (12.0 Athens, 20231207)

    Installation performed with Offline Installer results in missing subdirectories

    • Delphi
      When using the offline installer, the Browsing path for Delphi/64bit Linux lacks various directories.
    • C++ Builder
      When using the offline installer, the System include path for C++ / 32-bit Windows is missing the FMX subfolder.

    Note the “64bit” should be spelled “64-bit” and the “C++ / 32-bit” should be spelled “C++/32-bit” to be consistent with “Delphi/64-bit”.

    Similarly, the documentation misses that there is an intermediate node “Language” missing befer you get to either “Delphi” or “C++”, and that the “Compiler” mentioned tab for “C++” does not exist. It is this lack of attention to detail which you see all over the product, including the RTL library source code.

    Also note that these are not just a few “various” subdirectories or just “the FMX subfolder”, and besides in Delphi 12.0, you still have to fix them in Delphi 12.1 and 12.2 directly when you run it the first time after installation:

    • Delphi – add these 42 (FORTY TWO!) directories to the System include path field under Tools > Options > Language > Delphi > Library > 64-bit Linux:

      $(BDS)\source\rtl\common;$(BDS)\source\rtl\sys;$(BDS)\source\rtl\linux;$(BDS)\source\ToolsAPI;$(BDS)\source\IBX;$(BDS)\source\Internet;$(BDS)\source\Property Editors;$(BDS)\source\soap;$(BDS)\source\xml;$(BDS)\source\Indy10\Core;$(BDS)\source\Indy10\system;$(BDS)\source\Indy10\Protocols;$(BDS)\source\fmx;$(BDS)\source\databinding\components;$(BDS)\source\databinding\engine;$(BDS)\source\databinding\graph;$(BDS)\source\data;$(BDS)\source\data\ado;$(BDS)\source\data\cloud;$(BDS)\source\data\datasnap;$(BDS)\source\data\dbx;$(BDS)\source\data\dsnap;$(BDS)\source\data\Test;$(BDS)\source\data\vclctrls;$(BDS)\source\rtl\posix;$(BDS)\source\rtl\posix\linux;$(BDS)\source\data\datasnap\connectors;$(BDS)\source\data\datasnap\proxygen;$(BDS)\source\DataExplorer;$(BDS)\source\Experts;$(BDS)\source\indy\abstraction;$(BDS)\source\indy\implementation;$(BDS)\source\indyimpl;$(BDS)\source\Property Editors\Indy10;$(BDS)\source\soap\wsdlimporter;$(BDS)\source\Visualizers;$(BDS)\source\data\rest;$(BDS)\source\data\firedac;$(BDS)\source\tethering;$(BDS)\source\DUnitX;$(BDS)\source\data\ems;$(BDS)\source\rtl\net

      Likely there is one more directory missing as the Embarcadero documentation page has TWO semicolons here: $(BDS)\source\Visualizers;;$(BDS)\source\data\rest

    • C++ Builder – add these 8 directories to the System include path field under Tools > Options > Language > C++ > Paths and Directories > 32-bit Windows:

      $(BDSINCLUDE);$(BDSINCLUDE)\dinkumware64;$(BDSINCLUDE)\windows\crtl;$(BDSINCLUDE)\windows\sdk;$(BDSINCLUDE)\windows\rtl;$(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\windows\fmx;$(BDSCOMMONDIR)\hpp\$(Platform)

  • ………………………………………………………………………………………………………………………

Delphi 12 (and 11) don’t really search for Git/Hg/Svn, but just complain they can’t be found

It does not matter if you use the offline installer or on-line getit installer.

Note I will personally never trust getit: Embarcadero is known for not being able to keep their infrastructure working without long outages, and known for not communicating about infrastructure changes, see for instance:

Their single most stable server is the altd one. Don’t tell them, as it might make them too self confident and start making modifications to it forgetting this lessen: never fiddle with a thing that has been very stable for a very long time.

Upon first start of Delphi 12.2 patch 1 after installation, you get these warning messages:

  • ⚠ Git executable not found
  • ⚠ Hg executable not found
  • ⚠ Subversion folder not found

This despite these being available on the search PATH:

C:\Users\jeroenp>where git.exe
C:\Program Files\Git\cmd\git.exe

C:\Users\jeroenp>where hg.exe
C:\Program Files\Mercurial\hg.exe

C:\Users\jeroenp>where svn.exe
C:\Program Files (x86)\Subversion\bin\svn.exe

Note you have to enter them as full paths to git.exehg.exe and svn-folder (without svn.exe):

C:\Program Files\Git\cmd\git.exe
C:\Program Files\Mercurial\hg.exe
C:\Program Files (x86)\Subversion\bin

Note this has been an issue for Delphi 11 as well, and not responded to in comments it also being present in Delphi 12, see:

Delphi 12.2 inline release cannot be modified after install

A modification (like installing more/less features) requires a full re-install when doing the off-line installer. The steps are referred to by [Wayback/Archive] Adding or Removing Features Using the Offline Installer – RAD Studio:

After you install an initial set of RAD Studio features using the Offline Installer, you can use the installer again to add or remove RAD Studio features.

To add or remove features from your RAD Studio installation:

  1. Run the Offline Installer.
  2. On the Welcome page, check the Modify option and select Next.
  3. On the following pages, configure the features that you want to add or remove from your installation.

Detailed steps are at [WaybackSave/Archive] Using the Offline Installer – RAD Studio are also wrong:

To install RAD Studio using the Offline Installer:
  1. Open the Offline Installer:
    1. Download the ISO image that contains the Offline Installer.
    2. Mount the ISO image in the system where you want to install RAD Studio.
      You can do either of the following to mount the image:
      • Burn the ISO image on a double-layer high-capacity DVD, and put that DVD on the optical disk drive of the target system.
      • Mount the ISO image as a virtual disk with a software solution like WinCDEmu.
    3. Open install_RADStudio.exe in the mounted ISO image to start the Offline Installer.

There is no install_RADStudio.exe any more. The installer .exe filename depends on the Delphi version you install. For Delphi 12.2 inline Patch 1, the offline installer name is radstudio_12_esd_119782a.exe.

I forgot during which Delphi version Embarcadero changed the installer technology, but it has been at least since Delphi 10.4, as reported by Brian Long in [Wayback/Archive] It’s a blong, blong, blong road…: Installer tip.

Note that the online getit installer enables the [Wayback/Archive] Using the Feature Manager – RAD Studio, which is not available when installing using the offline installer..

Links

Some lists of off-line installers are here:

  1. [Wayback/Archive] Pliki instalacyjne RAD Studio (obraz ISO i instalator Webowy) | BSC Polska is way more complete than the below one, but lacks XE3 and 12.2 patch 1 and has the wrong location https://altd.embarcadero.com/download/RADStudioXE/delphicbuilder_xe_3953B_win.iso for XE
  2. [Wayback/Archive] RAD Studio Installation links (ISO and Web installers) – Barnsten.com misses XE3, includes 12.2 patch 1 – which has download issues – and has a link for 12.0 that used to work in the past, but has download issues as well: https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_2_i_0329_C2CC.iso fails for 12.2 inline https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_inline_116924a.iso fails for 12.0 and  https://altd.embarcadero.com/download/RADStudioXE/delphicbuilder_xe_3953B_win.iso for XE
  3. [Wayback/Archive] alfasoft.com/wp-content/uploads/RAD-Studio-Installation-links.pdf [PDF View] misses XE3 and 12.2, has the wrong download link http://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_0_94364.is for 10.3 (definitely not tested with the .is extension instead of .iso)
  4. [Wayback/Archive] RAD Studio 2010/xe/xe2/xe3/xe4/xe5 official ISO Download address (updated 2013-12-12) has not been updated for a long time, but had a lot of intermediate versions, but has these wrong links: https://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso and https://altd.embarcadero.com/download/RADStudioXE/delphicbuilder_xe_3953_win.iso

Somewhere in the future, I will try to make a complete list as not all of these altd links work. For now, this has to do: [WaybackSave/Archive] altd site:wiert.me – Google Suche

This one for instance didn’t always work (they failed at least from 20241102 until 20241104 downloading way too short files):

Just look at the download sizes and you understand why – his is also why people should publish URL, size and hashes (preferably sha1 or sha256, optionally md5) – filtered on M (mebibyte) sizes – yes, Delphi 7 was that small:

12M  ./altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_2_i_0329_C2CC.iso
22M  ./altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_inline_116924a.iso
649M ./altd.embarcadero.com/download/delphi/d7/english/ent/delphi_7_ent_en.iso

I need to check all of the above and especially the two below, which means first finding hashes for them as the sizes match:

https://web.archive.org/web/20240929231113if_/https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_inline_116924a.iso
https://web.archive.org/web/20241104165704if_/https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_2_i_0329_C2CC.iso

Probably the 12.0 one is OK, but the 12.2 inline got truncated to 2 gibibytes:

2.0G ./web.archive.org//web/20241104165704if_/https:/altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_2_i_0329_C2CC.iso
7.1G ./web.archive.org//web/20240929231113if_/https:/altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_inline_116924a.iso

I need to check which HTTP header fields in the HTTP request will help alleviate this. Hopefully just a HTTP referer header works fine. A job for somewhere in the future, as I already had obtained copies of these files from someone that already had them downloaded a while ago.

Sizes from:

du -h `find ./altd.embarcadero.com/ | grep iso` | grep M && du -h `find ./web.archive.org/ | grep iso` | grep G

These ones for instance didn’t work at all:

  • https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_inline_116924a.iso (not available any more)
  • https://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso (missing a build number)
  • https://altd.embarcadero.com/download/RADStudioXE/delphicbuilder_xe_3953_win.iso (missing the b at the end of the build number)
  • https://altd.embarcadero.com/download/RADStudioXE/delphicbuilder_xe_3953B_win.iso (yes, case is important with unix filenames people!)
  • https://altd.codegear.com/download/radstudio2007/CodeGearRADStudio2007_Dec2007.iso (invalid certificate because of the domain name)
  • https://altd.codegear.com/download/radstudio2007/CodeGearRADStudio2007setup.exe (invalid certificate because of the domain name)

These ones do:

This one was missing completely in the first two lists:

Queries:

--jeroen

Posted in Delphi, Delphi 10 Seattle, Development, GetIt, Java, Java Platform, Software Development, Web Development | Tagged: | 1 Comment »

Of interest – GitHub – t-d-k/LibreCrypt: LibreCrypt: Transparent on-the-fly disk encryption for Windows. LUKS compatible.

Posted by jpluimers on 2025/06/17

Of interest – despite the known issues and LUKS workaround through WSL – mainly as the majority was written in Delphi: [Wayback/Archive] GitHub – t-d-k/LibreCrypt: LibreCrypt: Transparent on-the-fly disk encryption for Windows. LUKS compatible.

Found when researching TFrame – What is the accepted way to use frames in Delphi? – Stack Overflow.

Related: Read the rest of this entry »

Posted in Delphi, Development, Encryption, Power User, Software Development, Windows Development | Leave a Comment »

TFrame – What is the accepted way to use frames in Delphi? – Stack Overflow

Posted by jpluimers on 2025/06/10

From a while ago: [Wayback/Archive] TFrame – What is the accepted way to use frames in Delphi? – Stack Overflow.

Besides me referring to my blog post Delphi – Frames as visual Components – don’t forget your Sprig!, these were important comments and answers with notes by myself:

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Exceptions and DLL in Delphi – Stack Overflow

Posted by jpluimers on 2025/05/20

Every once in a while I discover an answer I have not yet put on my blog, especially as related answer are always interesting.

This is one that didn’t make it until now: [Wayback/Archive] Exceptions and DLL in Delphi – Stack Overflow (thanks [Wayback/Archive] jpfollenius, [Wayback/Archive] Deltics and [Wayback/Archive] Lars Truijens)

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development, Undocumented Delphi, Windows Development | Leave a Comment »

Reminder: see if I can implement megabool in Delphi (or at least trilean)

Posted by jpluimers on 2025/05/06

Now that I re-wrote my 2012 talk on Class Operators and Helpers and presented it in Delphi at the ITDevCon2024 ([Wayback/Archive] ITDevCon | Home – Rome, 2024), see [Wayback/Archive] GitHub – jpluimers/ITDevCon2024: Temporary ITDevCon2024 repository until I fixed the «git checkout “Illegal byte sequence”» of my Conferences repository, here is an idea to check out if I can implement it in Delphi:

Read the rest of this entry »

Posted in Delphi, Development, Software Development | 2 Comments »

File scoped namespaces – C# 10.0 draft specifications | Microsoft Learn

Posted by jpluimers on 2025/05/01

Oops, I thought this had been published a long time ago, but oh well: it is never too late to publish reflections on a C# programming language improvement.

After recovering from my rectum cancer treatments and finally upgrading most of my projects to recent enough C# versions, it was time to catch up on useful little C# language features released during my treatments.

This one is really nice: [Wayback/Archive] File scoped namespaces – C# 10.0 draft specifications | Microsoft Learn.

I wish it had been released much earlier, as it so much reminds me of the unit keyword in Delphi which influenced C# a lot. Well, actually the unit actually started in UCSD Pascal and Turbo Pascal; UCSD Pascal ran on the UCSD p-Machine (more on that in a future blog post), which influenced the Java Virtual Machine, which was based on Java bytecode and a Just-in-time compiler in turn influenced the .NET Common Language Runtime.

There are many examples from other languages, paradigms and frameworks: I love how C# and .NET bring so much programming history together.

In Delphi  it is easy: a source file can contain at maximum one unit (and apart from files included in that source file, no other source files can contribute to that unit) and the filename needs to match the unitname, so the unit is a self contained namespace.

Read the rest of this entry »

Posted in .NET, About, C#, C# 10, Cancer, Delphi, Development, Java, Java Platform, Jon Skeet, Pascal, Personal, Rectum cancer, Rider from JetBrains, Software Development, Turbo Pascal, UCSD Pascal, Visual Studio and tools, vscode Visual Studio Code | Tagged: , , , , , | Leave a Comment »

Anyone any idea on the contributions of Embarcadero to the LLVM project?

Posted by jpluimers on 2025/04/30

With the huge dependency of Delphi on the LLVM project – basically none of their cross-platform support falls apart without LLVL – I wonder how much Embarcadero and their. mother company Idera contributed back to the LLVM project (which isn’t hard, see [Wayback/Archive] Contributing to LLVM — LLVM 20.0.0git documentation).

I tried these queries with remarkably few results:

The ones found were contributed by [Wayback/Archive] jwiegley (John Wiegley) · GitHub and [Wayback/Archive] atoker · GitHub. I could not find back who atoker is, but John Wiegley was part of the C++ Builder 1 team [Wayback/Archive] The C++Builder 25th Anniversary: Visual Development, the Power of the C++ Language and 2.5 decades of Continuing Excellence but made the patches while working for Boostpro, for instance [Wayback/Archive] [cfe-commits] PATCH [1/2]: Implementation of Embarcadero expression traits.

Hoping the above queries are not good enough: anyone having a more complete idea of the Embarcadero/Idera contributions to the LLVM project?

Especially in the light of this bsky post a while ago:

Read the rest of this entry »

Posted in C++, C++ Builder, Delphi, Development, Software Development | Leave a Comment »

Delphi 2006 Hidden COM Registry Entries

Posted by jpluimers on 2025/04/29

Somewhere in the drafts was a note to refer to an old Chris Bensen blog post on the Embarcadero server: blogs.embarcadero.com/cbensen/2005/12/07/22388

Alas, a lot of Embarcadero stuff is gone, some because of Idera not caring, others because as of Codegear, the team never was good at keeping infrastructure alive, nor cater for proper archiging at the Wayback Machine.

Luckily, the Borland days were different, as I found by browsing web.archive.org/web//http://blogs.borland.com/: almost 10k archived pages!

Searching for cbensen or 22388 then got me the actual post [Wayback/Archive] Delphi 2006 Hidden COM Registry Entries (the last link is dead, the others not indexed by search engines) and quoted below while adding some formatting: Read the rest of this entry »

Posted in Delphi, Delphi 2006, Development, Software Development | Leave a Comment »

Finding most recent forks of gists and github repositories

Posted by jpluimers on 2025/04/24

A while ago I found out that gist.github.com/lynatan/673e574faa8343fa01d7a91e75065c54 which I mentioned before in Delphi analog to C# ?? null-coalescing operator and Light Table like debugger evaluation and I wanted to

  1. find it back
  2. find the most recent forks of it

The reason was that I was working on the [WaybackSave/Archive] bit Time Professionals on X: “Live now: “Hidden Gems of Delphi Language: Operator Overloading and Class/Record helpers” @jpluimers” session which I presented at [Wayback/Archive] ITDevCon 2024 | Home where I also could enjoy the company of the other [Wayback/Archive] ITDevCon 2024 | Speakers and the famous [Wayback/Archive] IT DevCon 2024 speaker dinner (which attendees can also join for a slight surcharge).

The presentation is at [Wayback/Archive] ITDevCon2024/delphi_language_hidden_gems/delphi_language_hidden_gems.md at main · jpluimers/ITDevCon2024 · GitHub and pictures of the event at [Wayback/Archive] ITDevCon2024 – Google Photos.

Back to the problem at hand

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, DVCS - Distributed Version Control, Event, gist, GitHub, ITDevCon, Software Development, Source Code Management | Leave a Comment »

Delphi “array of const” to “varargs” – Stack Overflow

Posted by jpluimers on 2025/04/16

Just in case I ever think “oh, I might try want to go the Variadic function arguments way in Delphi” again, I must remember “maybe not a good idea” and re-read these posts:

Note that this example, despite the description indicates it is, it is actually not varargs by array of const (which requires using TVarRec as under the hood it is an open array of TVarRec): [Wayback/Archive] How to create functions that can accept variable number of parameters such as Format().

Then some Free Pascal links, which is different from, but also similar to Delphi:

Queries:

--jeroen

Posted in .NET, C, C#, Delphi, Development, FreePascal, Pascal, Software Development | Leave a Comment »