Note to self: mORMot2 contains an interface unit for the 7zip DLL: https://github.com/synopse/mORMot2/blob/master/src/lib/mormot.lib.win7zip.pas
Category: Delphi
Getting the command line parameters of an executable
I'm currently trying to reverse engineer a tool that consists of a frontend with a really dreadful GUI and a command line program as backend, which is called by that frontend and does the actual work. The idea is to write my own frontend that does some additional preparatory work, then calls the backend and … Continue reading Getting the command line parameters of an executable
dzMdbViewer 1.0.4 released
dzMdbViewer is a small tool I wrote, when I was stuck without a MS Access installation but needed to have a look into a .MDB file (and later .ACCDB file, if the Access Database Engine 2012 is installed). It can open these files and display a list of queries and tables stored in them as … Continue reading dzMdbViewer 1.0.4 released
GExperts 1.3.22 experimental twm 2023-03-25 released
The new GExperts version still supports all Delphi versions back to Delphi 6 (with the notable exception of Delphi 8) and even the Delphi 11 version is no longer in Beta state. There are even a few new features: Fast add mode for the Uses Clause Manager is back. Uses Clause Manager: Units "System" and … Continue reading GExperts 1.3.22 experimental twm 2023-03-25 released
Setting a form’s bounds can cause the DPI to change
Note to self: Setting a form's bounds can move the form to a different monitor. If that monitor has a different DPI than the one the form was originally on, this will cause a WM_DPICHANGED message to be sent to the form, which in turn will change the form's bounds again. This happened, for example, … Continue reading Setting a form’s bounds can cause the DPI to change
When showing a hint causes an Access Violation
I have just updated my last blog post regarding another effect of the Screen object caching the monitor configuration: Displaying a hint (via standard Delphi VCL functionality) causes an access violation. The solution is again to access the form's monitor property. Unfortunately, it's not that simple, as there is no user action that causes the … Continue reading When showing a hint causes an Access Violation
When Screen.Monitor[x].WorkAreaRect contains garbage
I'm posting this here so I can look it up later in case I forget it again: Some Delphi versions (I know about Delphi 2007 and earlier, not sure when it was fixed) have got a bug in the VCL code for the TScreen (global Screen object) when the monitor configuration changes. That class caches … Continue reading When Screen.Monitor[x].WorkAreaRect contains garbage
TdzSpeedBitBtn updated to support scaling
4 years ago I wrote a helper class TdzSpeedBitBtn which turns a TBitBtn into a TSpeedButton that can have the focus. That helper class has also been used in GExperts (in the Uses Clause Manager and Rename Components). It worked fine until Delphi 11 introduced per monitor DPI awareness. Then it still worked but the … Continue reading TdzSpeedBitBtn updated to support scaling
Why renaming a running executable can fail
I always thought that it is not possible to rename an executable that is currently running. Turns out I was wrong (happened before). It works fine for many executables, but not for all of them. In particular it does not work for the executables of our internal tools. Windows complains that the file is in … Continue reading Why renaming a running executable can fail
What does the following Delphi function do?
Still playing around with ChatGPT, I asked it "What does the following Delphi function do?" The Delphi function you posted converts a file size in bytes into a human-readable string format, using binary prefixes (KiB, MiB, GiB, TiB, PiB, EiB) to represent larger values. The function first checks the size of the file against various … Continue reading What does the following Delphi function do?