Calling Application.ProcessMessages in a Delphi program

Using Application.ProcessMessages is being frowned upon by many because often it means that your program design is flawed. These people usually suggest you should use multi-threading instead, which then opens another can of worms. First of all, let me make clear, that I am talking about Windows programs written in Delphi using the Visual Component … Continue reading Calling Application.ProcessMessages in a Delphi program

NativeInt / NativeUInt type in various Delphi versions

Just in case you are maintaining Delphi code for several older versions of Delphi: Be aware that the declarations of NativeInt and NativeUInt are wrong in some of them. Delphi versionSizeOf(Native(U)Int) Win32SizeOf(Native(U)Int) Win64 1 to 6not availablenot available 7 to 20078 ← this is wrongnot available 2009 to XE4not available XE2 to XE848 10.x48 I … Continue reading NativeInt / NativeUInt type in various Delphi versions

If your floating point calculations differ after a trivial change

Today I had a curious bug: After changing the way GPS coordinates were read from a file (not calculated!) all of a sudden lots of unrelated floating point calculations had different results. I reverted the changes just to be sure and, yes, the results were back to the original values. I added the new code … Continue reading If your floating point calculations differ after a trivial change

Enable debug logging in gnugettext.pas

gnugettext.pas has got a conditional define called DXGETTEXTDEBUG. If it is defined, various debug messages are written to a MemoryStream. That won't help much, if you can't read that stream, so you need a way to write that stream to a file. Guess what, that's easily possible. Just call DefaultInstance.DebugLogToFile passing it a file name … Continue reading Enable debug logging in gnugettext.pas