Posts

Showing posts with the label Pascal

Finally there - BDiff v1.0.0 has been released

Image
Well, it's been a long haul to get this little diff and patch suite from v0.2.x to v1.0. 22 years and 2 days ago I released my first attempt at translating Stefan Reuther's bdiff / bpatch utilities from C to Pascal. Stefan's original code was first published in 1999. This was v0.2.1(pas). Then, 1 day short of 2½ years ago the first v1.0 beta was released. 1 year, 1 month and 1 week ago the release candidate was made available. In the related blog post I said I was almost there, "almost there" meaning "about a year away", obviously. And today, v1.0.0 has finally been let out into the wild. Slow and steady does it! What's the difference between the release candidate and the final release? Not much. There are no new features, just a bit of refactoring, extra error checking and a new test. I've moved over to compiling with Delphi 13 & tweaked the docs. If you're not sure what these utilities do, then read the man pages:  BDiff  /  BPatc...

CodeSnip 4.27.0 released with Delphi 13 support

Image
And finally ... after a few updates to reflect the release of Delphi 13 Florence , last but not least we have an update to CodeSnip . This program can test compile snippets with any Delphi compiler installed on the host computer, along with Free Pascal. But every time there's a new Delphi release CodeSnip has to be modified to be able to use it. I wish there was a config file to update, but it's not that simple with this ancient code base! So, CodeSnip 4.27.0 knows about the existence of Delphi 13, can use it for test compilation, can record the results of such compilations in its databases and can emit code that selectively turns warnings on and off for the compiler. That's the only new feature of this release. The docs and help file have been suitably updated. ➣  Download the v4.27.0 release from GitHub . BTW the first time you run this new version after installing Delphi 13, CodeSnip will notice and will offer to configure itself to use the new compiler, unless you'v...

New inline if statement slated for Delphi 13

The new feature currently planned for release in the forthcoming Delphi 13 that I'm most excited about is the inline if statement. According to Marco Cantu's blog post , the new syntax is like this: X := if Left < 100 then 22 else 45; Another use is something like this: ShowMessage(if Odd(X) then 'odd' else 'even'); The values returned from the then and else parts must be of the same or compatible type. Apart from being really chuffed that this feature is being added I'm just as happy that the syntax is Pascal like, and is therefore more readable than the cryptic C style ?: construct. Also pleasing is the fact that Embarcadero have gone with version number 13 instead of being ridiculously superstitious! Since Delphi 13 has yet to be released the usual disclaimer applies that this feature is not guaranteed to be included.

Array Utilities Unit GitHub repo now public

Whoops! It's just been pointed out to me that the Array Utilities Unit I published yesterday isn't accessible because the GitHub repo is private. Thx Luca. I've now made it public . ➡️  Download the 1st release from GitHub Sorry about that

New Array Utilities Library Unit released

Image
Yesterday I added a shiny new unit to the DelphiDabbler Code Library - the Array Utilities Unit . It lives in the ddablib/arrayutils  repo on GitHub. This unit, named DelphiDabbler.Lib.ArrayUtils.pas ,   provides a single "Advanced" record, TArrayUtils , that contains static methods that perform common operations on generic arrays. There are numerous overloaded versions of many of the methods. Every method operates on a given generic array that is passed as a parameter, either as an array of T or a TArray<T> . The unit requires Delphi XE or later. It has been tested with Delphi XE and Delphi 12. The code depends only on the Delphi RTL, so it should work for any platform supported by Delphi and be both VCL and FireMonkey compatible. I've only tested Windows 32 bit and 64 bit targets. There are far too many methods to describe in here, but you can find them all listed and explained in the comprehensive  online documentation . As a taster you'll find Methods that ...

CodeSnip v4.26.0 released

Image
CodeSnip v4.26.0 has just been released. This release focusses mainly on adding more file formats when saving snippet information to file. You can now save such info in Plain Text, Markdown, HTML 5 & XHTML in addition to the existing Rich Text Format. The Help menu item that used to link to the CodeSnip blog now links here, as does any read-me file that links to the blog. There have been a few other changes and a minor bug fix which you can read about in the change log . ➤  Get v4.26.0 from GitHub

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 .

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 .

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 ...

Almost there - BDiff v1.0.0-rc.1 released

Image
It's only taken 21 years, but we're approaching the release of v1.0 of the BDiff/BPatch utilities . I don't want to rush it though (😉) so I've just put out a release candidate. There are various tweaks since beta 2, but the headline is that the programs are now available in 64 bit versions in addition to 32 bit. I'd been putting this off because I expected trouble, but everything happily re-compiled with the Delphi 64 bit Windows compiler and just worked. No changes required. Phew. If you want to read about the other tweaks then take a look at the change log . Not sure what these utilities do, then read the man pages: BDiff / BPatch . ✅ You can get RC1 from the GitHub release page .

CodeSnip v4.24.0 released

Image
CodeSnip  v4.24.0 has just been released. There's no main feature in this release. It's a bit of a mish-mash of numerous minor bug fixes and tweaks that have been implemented since the previous release. I'm not going into detail about the numerous small changes here: check out the  change log  if you're interested. Do you need this release? Well, its not going to knock your socks off, but there are a couple of bug fixes, so installing it wouldn't do any harm. ✅ Get v4.24.0 from its  GitHub releases page .

Version Information Editor v2.16.0

Image
I've just released v2.16.0 of my rather niche Version Information Editor . This program helps with writing the version info resource that should be in every program. Now I know that Delphi has been generating that information for usfor ages now, but the way it goes about doesn't work the way I want, so I wrote my own tool! Anyhow, this new version allows the value of an environment variable to be included in version information. You can also create new variables on the command line using the  -E:name=value  command line parameter. The variables can be referenced in the program using a new <%Env> macro. See the help file for details. Like all my recent releases I've simplified the process of building the program from within the Delphi IDE and added a new script to create release using MSBuild instead of Make. There are also a few bugs fixes and I've made a long overdue start on refactoring the very smelly and ancient code! 👉 Get v2.16.0 from GitHub  (all changes ...

BDiff / BPatch Utilities Finally Reach v1.0 - Sort Of

Image
It's just 20 years since I translated Stefan Reuther's bdiff & bpatch into Delphi Pascal and released v0.2.1(pas) Since then it's crept up to v0.2.9, released earlier this year. So maybe it's about time I admitted that the code's pretty stable and moved to v1! Well, almost. I've converted the code to Delphi 11 and done a lot of refactoring, so I'm wary about possibly having introduced bugs in the process. So it's been decided to go for a safety v1.0.0-beta release before finally releasing v1.0 . Oh, and I've dropped the custom license in favour of the BSD 3-clause license. BDiff & BPatch are maintained in the delphidabbler/bdiff repo on GitHub. You can find v1.0.0-beta on the GitHub releases page . There's no installer. Just copy BDiff.exe and BPatch.exe  from the release zip file to some directory on your system. Removable drives are fine too. Neither program modifies the host system in any way, so to uninstall you just need to delete ...

System Information Unit v5.22.0 released

Image
It's time for the latest monthly update to my  System Information Unit . Once again it's just the operating system detection code that's been updated. Yet again there were no major new Windows releases in April. This release just adds detection a few new Windows 10 and 11 public patches along with the latest release preview, beta, dev and Canary channel builds. I've also added detection of the Windows 11 22H2 "Moment" releases. Go and get this new release from the project's GitHub  releases page .

New Code Library Docs Site Completed

Image
It's taken months, but a final week-long push has finally got the DelphiDabbler Code Library documentation site completed. Just about every type, method and routines of every project in the library is documented. Many have their own pages. The new site is at  https://lib-docs.delphidabbler.com . The code library itself is in the  ddablib organisation  on GitHub. Now that's done the old Markdown based docs have been redirected to the new site and the old  ddab-lib-docs  repo has been archived.

System Information Unit v5.21.1 released - BUG FIX

Image
Just noticed a minor bug in v5.21.0 of the  System Information Unit . that I released yesterday. This bug will only bother you if you need to detect builds from the Windows 11 Insider Canary preview channel. Anyhow, the fix has been released in v5.21.1. Go and get this new release from the project's GitHub  releases page .

System Information Unit v5.21.0 released

Image
We're back to the monthly update cycle for this latest release of my System Information Unit . Once again it's just the operating system detection code that's been updated. There were no significant Windows releases in the month since the previous release, so this release just adds detection a few new Windows 10 and 11 public patches along with the latest release preview, beta, dev and Canary channel builds. Go and get this new release from the project's GitHub  releases page . Source: Wikipedia