Beware of TForm.SetBounds in a multi-monitor context

When in a multi-monitor context with monitors having varying DPI settings, TForm.SetBounds can be a little ambiguous when combined with form scaling.

The issue comes from Width / Height, in Delphi 10.3.1, they are understood as applying to the monitor the form is currently one, not the monitor SetBounds could be moving the form to. This is manifest when restoring a form position: if you store a form’s bounds, then try to restore it with SetBounds, it will result in an incorrectly sized form.

(more…)

Prepping up for GPDR

As you have probably been made aware by the flurry of privacy policy updates in your mailbox, GPDR is coming.

While I am not convinced GDPR will not turn into a perfect showcase for “the road to hell is paved with good intentions”, this is also a good opportunity to update BeginEnd.net to use the 64bit version of DWScript and add a few missing features.
(more…)

Best wishes for 2017!

A belated Happy New Year and Best Wishes for 2017!

This site and news have been neglected for much of 2016, this year’s resolution will be to try and revive it a bit.

In particular announcements and articles have fallen way behind the code as far as DWScript is concerned. So I will start the year by attempting to rectify that.

(more…)

Faster backups for large SQLite databases

sqlite370_bannerDespite having “lite” in its name, SQLite can handle very large databases quite efficiently. The single largest I am currently dealing with just passed 100 GB, and occasionally when backing it up with the SQLite standard Command Line utility it would take many hours.

After some asking on the sqlite-users list (thanks Clemens Madish & Simon Slavin), and some experimenting, I have gotten the backup time down to 4-5 minutes on a live 100 GB database, which is just fine in my book. Below are the findings and an utility, sql3bak, which wraps the results of the findings.

(more…)

SHA-3 ad hoc compiler: Reloaded

count_the_monkeysIt occurred to me that SHA-3 being a cryptographic hash, it is one of those peculiar bits of code that are fully self-testing. Any bug in a cryptographic hash will quickly cascade to a different result, no matter the bug or the input.

This means the ad-hoc-compiler-monkey can be unleashed “safely”, and can be allowed to try “improper changes.”
(more…)