Posts

Showing posts from April, 2025

CodeSnip v4.25.0 released (includes a fix of a fix for a fix)

Image
It's nice to be able to release a version of  CodeSnip  containing new features instead of bug fixes. Except that this release also includes bug fixes, including episode 3 of the hibernation bug fix saga. So what's new? Not a lot except for some new snippet export options: For the longest time you've been able to get a copy on the clipboard all the information about a snippet that gets displayed in the detail pane. Now you can finally save the information directly to a file. The only option is Rich Text Format just now, but more formats may make an appearance later. When exporting Pascal units and annotated snippet source code various formats can be chosen. HTML 5 format export files has now joined the list or plain text, Pascal, RTF and XHTML Some annoying, but relatively trivial bugs have also been fixed. Go see the change log if you're curious. But I can't close this post without mentioning the hibernation bug fix saga. A third fix of the bug where CodeSnip somet...

Hotfix available: CodeSnip bug fix fix

Image
It had to happen didn't it? Not long after my  post about yesterday's bug fix  release of CodeSnip,  Oliver  reached out to point out a potential problem with the way I'd implemented it. See the linked post and comments if you're interested in the details. Suffice to say that the problem was sufficient for me to hunt for an alternative solution. Having found one I've rushed out hotfix v4.24.2 to patch yesterday's release (v4.24.1) and make it more robust. Whether or not you downloaded yesterday's you really should update CodeSnip to the hotfix release. ⮞  Get hotfix release v4.24.2 from GitHub . For more info please see the similar post on the CodeSnip Blog .

Apologies to Oliver for deleting comment re CodeSnip bug fix

This is just a quick post to apologise to Oliver  for accidentally deleting his very useful comment on yesterday's post about fixing a long running bug in CodeSnip. I've reinstated as much of his comment as I could glean from an email notification as a reply to the deleted comment. Suffice to say, I'm now fixing the CodeSnip fix as a result of the info Oliver provided! So thanks for your help Oliver - I appreciate it.

Long running bug fixed in CodeSnip v4.24.1

Image
This has been a  l o n g   time coming. For several years a nasty access violation bug has been lurking inside  CodeSnip . It crashed the program when the computer was resumed from hibernation, but only sometimes. Because the bug was intermittent and required numerous hibernation / resume cycles to be run before it finally cropped up it defied diagnosis for a long, long time. Until now. Or up until someone finds my fix doesn't work for them! ⮞  Get the fix from GitHub   EDIT: no, don't get it - I'm releasing a fix for the fix soon. See comments below. For an explanation of what was causing this little horror of a bug, see the longer post on the CodeSnip Blog .

Version Information Editor v2.17.0 released

Image
Here we go again. I've found another repo with some outstanding issues and part completed code. So once again things have been finished off and the result is the release of Version Information Editor (VIEd) v2.17.0. The release is pretty much a tidying up exercise. The code, like me, is old and not pretty. So too make it less embarrassing there's a lot of refactoring been done. Some dialogue boxes have been tarted up too. The only reason that this release gets a minor version bump instead being a patch of v2.16 is that a new -open command line option has been added to open the program with a specified file already loaded. For a list of changes see the change log . ➤ Download this release from GitHub . Here's an image showing the  -open  command being used to start VIEd with its own version information file loaded.

Pascal Highlighter v2.4.0 released

Image
As part of my current manic programming streak, I've been poking around in some of my neglected repos (I really do have too many). I noticed that last year I'd been doing some work on PasHi  , my Pascal source code highlighter console app, but had never finished it. So I finished it, and the result is this v2.4.0 release. A few more command line options have been added and one bug has been fixed. A couple of command line parameters were deprecated. I won't list the changes here. Go look at the change log if you're interested. PasHi comes with an installer that gives the option to a install a GUI front end if you want it. That is PasHiGUI. It interfaces with PasHi to save you having to go anywhere near the command line. PasHiGUI is pictured below ⮞ Get the download from GitHub .

The Garbage Program hits v0.5

Image
My busy streak of programming continues! v0.5.0 of GBG , my little utility that creates files filled with pseudo-random bytes of  G ar b a g e, is now available. Previous releases would fill up a 10MiB buffer of random stuff and then repeatedly output that until a file of the required size had been generated. So, for files smaller than 10MiB all the data was random but for larger files the data did eventually repeat. It struck me that having repeated data could be useful, but only if there was some control over the length of the repeated blocks. Conversely having a file of entirely random data may also be handy. So, I've added a new command line option with which a repeating block size can be specified. For e.g. to create 100 byte random block you would pass the -r:100 option to the program. To get a file that is full of entirely random bytes you can use -r:all . Now, when generating large files in can be tedious typing in long numbers of bytes and having to calculate (or remember...

Released v0.2.0 of the Fractions unit

Image
What I hope is the last v0.x release of my Fractions unit has just been released. If all is well v1.0 should finally be out in May 25, just 12 years after it first appeared. This unit provides an advanced record, TFraction , that encapsulates an immutable fraction and a whole bunch of methods for manipulating them. There are also a lot of operator overloads that make it easy to perform arithmetic and comparisons. You can cast from integers and to and from floating point values. TFraction is well documented online if you want to check out what operations it supports. Finally there are comprehensive DUnit tests for every method and operator. ⮞  Get it here . Here's the properties, methods & operators (with various directives deleted): property Numerator : Int64; property Denominator : Int64; property WholeNumberPart : Int64; property FractionalPart : TFraction; function IsProper : Boolean; function IsWholeNumber : Boolean; function Sign : TValueSign; function CompareTo (const ...

DUSE v0.3.1 released

Image
Following a bug report I've updated DUSE , the Delphi Unit Scope name Expander program, to allow Delphi 12 unit names to be imported easily. That's it really. If you use DUSE and Delphi 12 this is worth the update. 🠞  Get DUSE v0.3.1 from GitHub .

Code Snippet Collection v2.2.3 released

v2.2.3 of the DelphiDabbler Code Snippets Collection has just been released. It includes bug fixes, so you should updated For details see  this post on the CodeSnip blog .

Meany - the average calculator - an update

Image
There may have been a broken link to the releases page on GitHub for the new Meany program. That link should now work - see  https://github.com/ddabapps/meany/releases . The web page is finally up too: https://delphidabbler.com/software/meany .

System Information Unit v5.32.0 released

Image
This is a pretty big update to the System Information Unit : a piece of code I keep promising is on its way out! Following a feature request on GitHub to provide access to the computer's UUID I hopped off down a rabbit hole BIOS related code and documentation. Once I discovered I needed to dig the UUID out of the BIOS I found a hole host of goodies sitting there. So, instead of just adding a UUID method to TPJComputerInfo I ended up adding a whole new class, TPJBiosInfo , that gives access to some the the information stored in the BIOS. Well, providing your BIOS complies with the SMBIOS reference specification v2.0 or later it does. Otherwise the class does sweet FA. Three of the methods of TPJBiosInfo duplicate (sort of) three methods of TPJComputerInfo . I say sort of because the TPJBiosInfo methods get their info directly from the BIOS, while TPJComputerInfo relies on the information being duplicated in the registry. In my case both approaches work, but I've read that the ...