Delphi’s TStream.Read returns the number of bytes read

Note to self: TStream.Read in the Delphi RTL returns the number of bytes read. It does not check whether the intended number of bytes could actually be read. So if you do not check it yourself, call TStream.ReadBuffer instead. So, it's either: [delphi] var st: TFileStream; Buffer: array[0..7] of Byte; BytesRead: Integer; begin st := … Continue reading Delphi’s TStream.Read returns the number of bytes read

dzPackageInst 1.0.2 for Delphi 6 to 10.3 released

Today I released version 1.0.2 of dzPackageInst. Its a command line tool that allows installing and uninstalling design time packages into the Delphi 6 to 1.3 IDEs. Source code and download are available from the project page on SourceForge. It's also part of my buildtools which I use for nearly all my projects.

TStringList vs. THashedStringList vs. TDictionary

Prompted by the topic Dictionaries, Hashing and Performance in the international Delphi Praxis forum I did some timing to compare the performance of data structures in the Delphi runtime library that can be used to store data indexed by strings: a sorted, case sensitive TStringList (available since Delphi 6) a sorted, case sensitive THashedStringList (available … Continue reading TStringList vs. THashedStringList vs. TDictionary

Building a project in Delphi 10.3 fails if the build script output contains “error:”

I just had a nasty surprise with Delphi 10.3 when trying to build a project that worked fine with previous Delphi versions. The problem turned out the text one of my pre build events wrote to the output. It contained the string "error :". Apparently Delphi 10.3 parses the output of the build events and … Continue reading Building a project in Delphi 10.3 fails if the build script output contains “error:”