New in Delphi Rio (10.3)

Dark-light themes for IDE The IDE includes some of Andreas Hausladen’s “IDE Fix Pack” fixes and improvements (FINALLY!) High resolution timer caused by using Virtual Treeview. Findhinstance optimisations. Debugger using CREATE_DEFAULT_ERROR_MODE when creating the process. Tstringlist indexof and Name optimizations. High DPI Image List Support. Can fully support multi-resolution, pixel perfect images on all controls, […]

New in Delphi Rio (10.3) Read More »

New in Delphi Seattle (10.0)

New custom VCL controls corresponding to some new Windows 10 UI controls, which can also be used on previous version of Windows. New VCL controls: TActivityindicator, TSearchbox, TRelativePanel, TToggleSwitch, TSplitview Modern looking SelectDirectory function Support for Windows 10 Notifications using the notificationcenter component Box2D physics engine. Object Pascal interfaces for the Box2D physics engine Support

New in Delphi Seattle (10.0) Read More »

New in Delphi 12 – GetLinesEnumerator for reading text files line by line

GetLinesEnumerator – New enumerators for reading file content Returns the line-by-line enumerator without loading full file content into the memory. Memory Efficiency: TFile.GetLinesEnumerator reads the file line by line, which is memory-efficient for large files. Unlike TFile.ReadLines (which loads all lines into a list), this method streams the file incrementally. I test it with both

New in Delphi 12 – GetLinesEnumerator for reading text files line by line Read More »

CDN/Cloudflare – error:14094438:SSL routines:ssl3_read_bytes:tlsv1 [OR] error:14077438:SSL SSL23_GET_SERVER_HELLO:tlsv1

While trying to communicate with my HTTPS server, I encountered a problem when CDN (Cloudflare) was active. Exception class EIdOSSLUnderlyingCryptoError with message ‘Error connecting with SSL. error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error’. error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error’. I switched to TNetHTTPClient and it worked. Here is the code: // TNetHTTPClient. function GetToken(CONST URL: string; StatusInfo: TCallbackEvent

CDN/Cloudflare – error:14094438:SSL routines:ssl3_read_bytes:tlsv1 [OR] error:14077438:SSL SSL23_GET_SERVER_HELLO:tlsv1 Read More »

Saving an object to disk/file

Serialization is a critical technique in programming, enabling objects to be saved to disk or transmitted over a network. While there’s no universal, automatic way to serialize complex objects in Delphi (due to challenges like private fields), manual serialization is straightforward—and binary serialization, in particular, stands out as the fastest and most efficient method. In

Saving an object to disk/file Read More »

I refactor your old code for free!

Stuck With Legacy Delphi Code? I Can Modernize It! Are you still working with old Delphi codebases using AnsiStrings, raw pointers in arrays, TStringList misusage, hardcoded typecasts, goto, blocking timers, Application.ProcessMessages, or excessive global variables? Would you like to upgrade it to modern coding standards, ensuring compatibility with Delphi 11.3 and 64-bit environments? I will

I refactor your old code for free! Read More »

My odyssey in the world of bioinformatics, with Delphi

After a conversation about the low popularity of the Delphi language—further worsened by the lack of libraries for Delphi—I decided to share my odyssey in the world of bioinformatics, using Delphi as my primary development tool.   My toy tool that turned into a commercial product Back in 2007, I wrote a small tool for

My odyssey in the world of bioinformatics, with Delphi Read More »

Converting VCL code to FMX

Even though there are a few tools for porting a project from the VCL (Visual Component Library) to FMX (FireMonkey) the process is not easy especially because not all VCL components have direct FMX equivalents. Some components require substitution, and some functionality must be reimplemented. The problem deepens with 3rd party VCL components. Tools for

Converting VCL code to FMX Read More »

Delphi Firemonkey – ld.exe cannot find shlwapi.dll: No such file or directory

After installing FMX and using it for a while I started getting a weird “ld.exe cannot find shlwapi.dll” message. There was nothing like this to be found on the internet! I posted a question of StackOverflow but people started to point in (as later turned out to be) totally wrong directions. The complete error msg

Delphi Firemonkey – ld.exe cannot find shlwapi.dll: No such file or directory Read More »

Cross-platform development with Firemonkey – Tool-chain setup

This is a chapter from “Delphi in all its glory” book. Preparing for cross-platform An SDK is required for the following platforms: Multi-device applications for the iOS Device – 64-bit platform. Multi-device applications for the Android platform. Multi-device applications for the Linux platform. If you haven’t chouse to install them during Delphi setup, you need

Cross-platform development with Firemonkey – Tool-chain setup Read More »

Say no to crappy images in your Delphi programs. Finding the best resizing algorithm.

So, because I built a program that has to resize/scale images up and down, I built this tool to test 13 resizing algorithms for Delphi. Tested algorithms Tests: Two of the above tests include 3rd party algorithms.If you don’t have access to their source code, you will have to switch off the {$3RDPARTY} switch.  

Say no to crappy images in your Delphi programs. Finding the best resizing algorithm. Read More »

Environment variables and macros in Delphi

Environment variables are strings defined by the IDE. Each environment variable serves a specific purpose. Some of them are fixed, others are changed dynamically depending on what/how you are compiling your project. For example, they provide dynamic paths that influence where files are stored, define default locations for binaries, define how projects are built, and

Environment variables and macros in Delphi Read More »

Breakpoints – Issues during debugging

For any debugging issue, make sure that the program is compiled under the “Debug” configuration, and that the “Debug” configuration is properly set, as explained in the “Debugger” chapter in my books. Don’t forget to build (instead of compile) after changing any project settings! Also, don’t put yourself in a dreadful situation by using 3rd

Breakpoints – Issues during debugging Read More »

Delphi breakpoints

Breakpoints A breakpoint tells the debugger to pause the program’s execution at the location (line of code) where the breakpoint is. We can set source breakpoints in the Code Editor before we run the program, but also while the program is already running. The places where we can place breakpoints are marked by a blue

Delphi breakpoints Read More »

Too many programmers don’t understand exceptions. Do you?

I am still amazed to see how many (even seasoned) Delphi programmer don’t understand exceptions. This post starts from a nice video posted by the Silver Coder. He states that exceptions are not the best idea and the reason mentioned in the short video is that try/except makes the code slow and difficult to read.

Too many programmers don’t understand exceptions. Do you? Read More »

Never create a new Delphi project – Use templates instead!

Note: This article is tightly connected to the “How to correctly set the compiler options” article.   Somebody asked how to set the default project options for a new Delphi project. I stopped years ago wasting time with this. Instead I have a folder where I store a “template” project. You can find this Delphi

Never create a new Delphi project – Use templates instead! Read More »

$(Auto) – One package to rule them all

Note: This page is an excerpt from my “Delphi in all its glory – Libraries” book.   $(Auto) is a new environment variable, introduced in Delphi 10.4. Embarcadero didn’t make a big show around it so it went unnoticed by most programmers. But don’t ignore it! It is extremely useful for packages, where it can

$(Auto) – One package to rule them all Read More »

Hardware – Cheap companies making cheap mainboards or “Why I hate laptops”

I have encountered quite a few computers where you could hear the CPU/GPU “accelerating” in the sound card. I never owned such a cheap board. Lucky me. Mainboard for enthusiasts are much better than those in the laptops and “large-scale” PC sales.The round up (https://www.techspot.com/review/2907-amd-x870-motherboards/) shows impressive values for all modern enthusiast mother boards.Again, today

Hardware – Cheap companies making cheap mainboards or “Why I hate laptops” Read More »

Scroll to Top