Showing posts from 2023

Fractions unit v0.1.2-beta released

Almost 10 years after the v0.1.1 was released there's been an update to my Fractions Unit . v0.1.2-beta contains a refactoring of the LCM function that gets called in several places in the unit. The refactoring, suggested by lukas-hribik, reduces the likelihood of an integer overflow. This update is recommended. Get it from the project's GitHub Releases page .  Maybe it's time for a v1 release!?

System Information Unit v5.25.0 released

Just another routine update to my  System Information Unit  that updates the OS detection code to recognise new Windows 10 & 11 builds released in November 2023. This is the last release of this unit in 2023. Grab this release from the project's GitHub  releases page .

CodeSnip v4.22.0 released - supports Delphi 12

Just released  CodeSnip  v4.22.0. The main new feature is the addition of support for test compiling snippets with the newly released Delphi 12: Delphi 12 had been released — MarcoCantu (@marcocantu) November 7, 2023 Read more about the new release over on the  CodeSnip blog . ⏬ Download the new release from the  v4.22.0 release page  on GitHub.

System Information Unit v5.24.0 released

It's been longer than usual since the last update to my  System Information Unit  on 1st July, but the wait is over. As is becoming normal, TPJOSInfo is the only class to be updated. It now detects Windows 10 & 11 builds and revisions released between 1st July and 2nd November 2023. The main addition was support for detecting Windows 11 23H2 that was released on 31st October. Grab this release from the project's GitHub  releases page .

New String Property Editor Planned For RAD Studio 12 Yukon

This blog post is based on a pre-release version of the RAD Studio software and it has been written with specific permission by Embarcadero. No feature is committed until the product GA release. It seems I'm getting very excited about multi-line strings of late. My previous post was about multi-line string literals for Delphi  and this time I'm talking about the new multi-line string property editor being slated for the RAD Studio 12 IDE. For more years than I care to remember, I've been frustrated by the inability to enter multi-line strings in the Delphi IDE object inspector. That meant having to resort to code to initialise some multi-line labels. So frustrated was I that I wrote a little property editor of my own ( stringpe ), way back in 2004. It's still around and on GitHub. Here's what it (sometimes) looks like: Yeah, I know this is Vista - I used an old screenshot Sometimes? Well it looked like that until it got installed on DPI aware Delphis, and then it sh

Multi-line String Literals Planned For Delphi 12 Yukon

This blog post is based on a pre-release version of the RAD Studio software and it has been written with specific permission by Embarcadero. No feature is committed until the product GA release. The upcoming new release of RAD Studio 12 Yukon is a major update that's got a new Delphi language features that I've been wanting for years, or perhaps even decades since I first discovered heredocs in PHP. Yep, we're going to get multi-line string literals. This excites me just as much as the earlier introduction of inline var statements, which was a lot! I write a lot of multiline string constants in my code like this: const   S0 = ' Lorem ipsum dolor sit amet, consectetur adipiscing elit.' +         sLineBreak  +        '   Vestibulum eleifend elit id dapibus pulvinar.' +        sLineBreak +        'Suspendisse tincidunt, diam vel dapibus aliquam.'; Miss out one of the closing quotes or + signs and bang, compile failure. Annoying. But now we have multi-l

CodeSnip v4.21.2 Released (minor bug fix)

Just released  CodeSnip  v4.21.2, which is a minor bug fix release. Updating is strongly recommended but not essential. Full details of this release are discussed in detail over on the  CodeSnip blog . ⏬ Download the new release from the  v4.21.2 release page  on GitHub.

Simple little app to view the SWAG archive

I was casting around looking for something new to write in Delphi 11 when it struck me that there hasn't been an easy way to view the SWAG archive since I took down the viewer from my website and, well, archived the archive! Now I can't imagine there's going to be much demand to view this rather ancient archive of Delphi & Turbo Pascal code, so I'm not spending too much time on this. So, here's v0.1.0 of SWAGView for your delight and delectation: SWAGView v0.1.0 running on Windows 11 You can grab a copy from the program's  releases page . There's also some brief  online help  and a  web page . The source code is on GitHub in the  ddabapps/swagview  repo. ⚠️ Be aware that SWAGView doesn't come with a bundled copy of SWAG - you need to download that from the SWAG GitHub repo and then install it from within the program. Full instructions here .

System Information Unit v2.23.0 released

It's the 1st of July, so it's time for another update to my System Information Unit. Once again TPJOSInfo has been updated to detect the various Windows 10 & 11 builds and revisions released during the previous month, June 2023. Grab this release from the project's GitHub  releases page .

Renamed Unit2NS app to DUSE at release 0.3.0

Release 0.3.0 of the app formerly known as Unit2NS was released yesterday. Unit2NS is/was a little application that, given a unit name, finds all the unit scopes that contain a unit of that name. For example, on Delphi 11.3 Enterprise there's a unit named Json in the following unit scopes: Data.Bind FireDAC.Comp.BatchMove REST System The thing is, when I released v0.1.0, I'd referred to these unit scope names and " namespaces ". As a commenter pointed out, this was wrong. Said commenter was right that I was wrong. It was quite simple to change the text in the UI and docs, but  the trouble was that the "NS" in Unit2NS stood for "namespace", and it's been bugging me. So I decided to change the name, I could have turned round "NS" to "SN" (for scope name), but that seemed like a cop out, so I've gone the whole hog and changed the name to ... 綾綾... DUSE: D elphi U nit S cope E xpander. Corny, maybe, but I tried lots of

gbg Garbage Generator v0.3.0 Released

Yesterday I released gbg v0.2.0, followed a few hours later by v0.3.0. Busy day! v0.2.0 When I announced the first release of gbg  someone suggested an option to generate ASCII characters instead of random bytes. That's what I added in v0.2.0. There were two options that could be added to the command line: -a to generate printable ASCII characters with codes 32 to 126. -A  to generate all ASCII characters with codes 0 to 127. Here's the new commands being used with some sample output: v0.3.0 I like my command line programs to be able to display their version numbers, so I added the -V option to do just that. The Usage screen also got updated: Any More Suggestions? Any more requests? Either leave a comment on open an issue on GitHub. Downloads You can get the latest version from the GitHub releases page . I'd skip v0.2.0 and go straight to v0.3.0, but it's up to you.

Version Information Manipulation DLL dumps 16 bit support

As I mentioned in last November's post Version Information Manipulation DLL gets an update after 15 years!  this DLL is more than a little niche. That post described what the DLL does, so I'm not going into detail here. To get more info take a look at the user guide . So, after waiting 15 years to get to v1.1 it's taken just 7 months to jump to v2.0. In essence v2.0 just drops support for ANSI version information resources. That shouldn't be a problem these days, because ANSI version information is only required when reading 32 bit programs on Windows 9x or when processing 16 bit resource files. Still, if you do need ANSI support, you can go back to v1.x. Get v2.0.0 from GitHub . One of the DLL's demo programs

Version Information Editor v2.15.1 released

This new patch release of Version Information Editor fixes a couple of annoying bugs that affect macros and fields. It's worth an update because the bugs could easily affect you. See the change log for details.   Get v2.15.0 from GitHub .

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

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

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

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

The joy of doing things the hard way

While rummaging around a while back I stumbled across a stack of old copies of The Delphi Magazine . And of course I started reminiscing. When I was a lad Did you know that information was once distributed on paper?! That was back at a time in prehistory before the web. It took forever to solve a programming problem, especially for those of us without a network of programming friends. What did we do before Stack Exchange? We struggled that's what. We browsed magazine back issues, we ordered library books and, more often than not, we never found an answer. Back to first principles But did that isolation have one advantage ? If you were facing  a problem you might just have to get creative and solve it yourself. Of course, it probably meant reinventing the wheel. Your solution might be far from the commonly accepted solution. It might even be laughably sub-optimal. But if it worked, it was an achievement. It was creative. I'm just wondering if we might have lost some of that? I k

System Information Unit v5.21.1 released - BUG FIX

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

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

New Garbage Program

What? Have I written a really bad program? Well that's not for me to say. What I intended to write was a little new Windows command line program that creates a file of a specified size that's full of garbage. It's called gbg .  This just scratches an itch I had while testing the BDiff/BPatch programs from my website. I wanted to stress test them diffing and patching two large, almost completely different files. I just needed something to create some test files of exactly the right size. Now there's probably already a program out there that does just that, but that's no fun. So I scribbled one down in my shiny new copy of Delphi 11.3, just for fun. I've just put out gbg v0.1.0. It's very much the first attempt, so don't expect too much! It's extremely simple to use. You just pass it a file path followed by a file size in bytes. Press enter, and it's done. Well almost: if the file size is quite large, you'll be asked to confirm first. The lar

Hosting Info-ZIP Windows zip/unzip

The web site I usually use to download the Windows build of the Info-ZIP zip/unzip pair of programs is looking a little long in the tooth and I'm a bit concerned it might go away. Added to that Chrome is getting increasingly hysterical about the site's lack of support for https.  So, I decided to put copies of zip v2.32 & unzip v5.52 on my Google Drive, along with the required license / copyright statement. And since the license permits it, I've shared the link . And just in case that link gets moved, I've added a section to my website that won't move, and will always point to wherever the download link might move. See .

Version Information Editor v2.15.0 released

When I released the recent hotfixes to Version Information Editor I think I mentioned that I was part way through developing the next point release. Well here it is. It adds more fields to insert components of the current date, like hour, month etc let string information fields cross reference each other. Support for saving .vi files in UTF-8 was added to work around some problems saving characters outside the default ANSI encoding. There were quite a few bugs fixes, one of which fixed a potentially serious bug that could. or rare occasions, cause a stack overflow. See the full list of changes in the change log . Because of the bug fixes, updating is recommended . Get v2.15.0 from GitHub .

Critical Bug Fix in Version Information Editor

While working on a revision to my Version Information Editor I stumbled across a potential buffer overrun error in some clipboard access code. By the look of the horrible code the bug has been there for years - possibly 20+ years. I suppose I can take some comfort from the fact that the program is a bit niche and not at all widely used! Anyhow, I fixed it and pushed out a hotfix. And of course that appeared to break something else. So, within a couple of hours, out came today's 2nd hotfix. If you do use the program you really do need to update to v2.14.2 ASAP. 協梗 You can get it from GitHub .

CodeSnip v4.21.1 Released (bug fix)

Just released  CodeSnip  v4.21.1 that fixes some nasty bugs in v4.20.0. Updating is strongly recommended. Full details of this release are discussed in detail over on the  CodeSnip blog . ⏬ Download the new release from the  v4.21.1 release page  on GitHub.

System Information Unit v5.20.0 released

Happy April Fools day. I've broken my regular monthly update cycle for my System Information Unit project from my DDabLib Code Library. It's been 3 months since the previous update on 1st January. Once again it's all about updates to the TPJOSInfo static class and changes to Windows 10 & 11 releases since the beginning of the year. I've added detection of various public patches, release previews and Dev channel builds. Detection of the new Windows 11 Canary channel builds has also been added. Go and get this new release from the project's GitHub  releases page .

BDiff / BPatch Utilities v0.2.9 Released

After a bit of a programming hiatus, I've finally got round to a bit of coding and implemented a few tweaks to my Pascal implementation of Stefan Reuther's bdiff. This is largely a refactoring and documentation revision update. The only tiny functional change is that I've finally changed the build date reported by the --version command to ISO format. It's only taken the best part of 20 years to take these programs from v0.2.0 to v0.2.9. You never know, but maybe v1.0 might come out this year too! We're getting close. Anyhow, if you want more info head over to the project's page on my website. To download the binaries go to the release page on GitHub.

Feelin’ my age (part 4): Sinclair SuperBASIC on the QL

In the 3rd post in this series,  Remembering UCSD P-system Pascal , I babbled on about my experience with UCSD P-system Pascal  and mentioned the Sinclair QL   and its built in dialect of BASIC - SuperBASIC . I still have a soft spot for that BASIC. Sinclair QL with the infamous microdrive tape cartridges. Photo from the Internet Archive Before acquiring the QL the whole of my programming had been done in BASIC. I'd read about other languages but never used them. These BASICs were quite primitive or, in the case of the Level 1 BASIC  on my 4Kb TRS-80 Model 1, extremely primitive. SuperBASIC was so different. Later it occurred to me that it leaned more towards Pascal. It's certainly has much better support for structured programming than the standard basics. For example it had: Multi-line  IF - THEN - ELSE - END IF  statements. A generalised repeat loop construct: REPeat - NEXT - EXIT - END REPeat. This can be exited anywhere within the loop. An IF - THEN - EXIT statement test

System Information Unit v5.19.0 released

Happy new year folks. Being new year's day here in the UK, its customary for pretty much everything to be closed down. But here I am releasing the latest update of the System Information Unit from my DDabLib Code Library! Poor me ;-). What's new this time? Well, as usual it's all in the TPJOSInfo static class. As is now the norm the OS detection code has had its monthly revision to catch up with Windows 10 & 11 releases over the last month. This time there have been a few other tweaks too. Here's a list of the main changes: Update detection of Windows 10 21H1, 21H2 & 22H2 and Windows 11 21H2 & 22H2 with releases and Insider preview builds released in December 2022. Preview builds for all Windows 10 releases from version 1507 onward are now detected - before only those for Version 21H1 and later were reported. Detection of expired Dev and Fast Ring builds has been removed because there doesn't seem much point detecting expired OS releases! Accuracy of det