Showing posts from 2022

Still worrying about memory usage, and loving it!

One of the things that comes from having cut my teeth on early micro computers was that I always, but always, had to worry about memory usage. When your computer's got 4KB RAM, as had my 1st Tandy TRS80 Model I, you have to worry about code being small enough to fit and  to leave enough room for data. Photo from Later I was constraining the size of my programs due to the time it took to upload them on my dial up internet connection. Even now I still can't stop worrying about profligate use of memory or disk space. I've resigned myself to the inefficiencies or bloatware, but there are still some marvellous examples of coding efficiency out there. My favourite example is my Digital Audio Workstation of choice, REAPER . It's a professional quality, complex application with a download size of 15Mb (for the latest Win 64 v6.72 as of December 2022). That's not a typo - it's 15Mb. And no, it's not for a downloader that scuttles off to the net to g

CodeSnip v4.21.0 Released

Just released CodeSnip v4.21.0. Full details of this release are discussed in detail over on the CodeSnip blog .

Another embarrassing failure to create CodeSnip 5

One day, perhaps for the 10th anniversary of first trying to given CodeSnip a major update, I might manage it. But not this time 😩. For a tale of over-ambition, pop over to the CodeSnip Blog .

System Information Unit v5.18.0 released

Here we are again. More builds of Windows 11 came out in November, so here's the now customary update to the System Information Unit. No big changes this time. As usual you can download this release from GitHub. Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files.

Enable Hyper-V on Windows 11 Home

I've treated myself to new Windows 11 laptop in this year's Black Friday sales. This going to be my main development machine. I decided to install a second copy of Windows in a virtual machine as a sandbox for beta testing and any other activities that i don't want scribbling all over my shiny new file system. Having settled upon Microsoft's official Windows 11 development VM I thought I'd use Hyper-V. That's when I hit a snag. My laptop is running Win 11 Home. And the Home edition doesn't officially support Hyper-V. Poking round net the revealed a hack to force Windows Home to install & use Hyper-V. Just in case anyone else is having the same problem, I thought I'd share a link to the page that explains how to get Hyper-V up and running. Here's the link: . While this hack worked for me, I'm issuing the usual disclaimer! If you do use this method, do remember to create a restore point

Feelin' My Age (part 3): UCSD P-System Pascal

 From the mid 1980s to early 90s I was proud to be a mature undergraduate student of the UK's remarkable  Open University †, majoring in pure Maths. I took a subsidiary computer science module as part of of the degree. Pascal was one of the languages that was taught ( Prolog  being another). At the time they taught Pascal using the P-system and  UCSD Pascal . UCSD Pascal in use - source Wikipedia, Public Domain UCSD Pascal Handbook - source So why does that make me feel my age? Well the Wikipedia  Pascal Programming  page discusses UCSD Pascal under the " Early Pascal Compilers " section! And the last release was in the mid eighties. Now I did pass that course (with distinction I might add!) and I'd love to show you some of the code I wrote, but sadly it's on  5.25" floppies ! Strangely enough, I don't have a suitable drive handy. Which brings me on to another reason this makes me feel all dinosaur-like. To take th

Version Information Manipulation DLL gets an update after 15 years!

I've been going through my repositories on GitHub trying to decide which ones have had their day and need archiving and which ones to keep. The Version Information Manipulation DLL was on its way to the project afterlife when I realised that one of my other projects could use its code. So it got a reprieve. Since the project was last updated in 2007 and was compiled with Delphi 7 it obviously needed a bit of work to make sure I didn't break anything by switching to a Unicode compiler. Any how, after recompiling with Delphi 11, tweaking some code that assumes SizeOf(Char) = 1, adding a missing method and testing thoroughly, v1.1 is finally here. So what does it do? If reads raw, binary version information data that's been extracted from an executable or resource file, let's you edit it, and writes out a binary in the correct format for bundling into a resource file. Given that the Windows API does the reading bit then why bother? Well, some compilers don't write th

Would ARM exist without the BBC?

If you're from the UK and of a certain age then you're going to have encountered the BBC micro. That machine, like the Sinclair Spectrum, is responsible for a lot of Brits getting their first introduction to programming. Those a bit younger than me might have used Beebs at school. For me it was at an adult education computing course where I used them to learn BASIC and Pascal. But is good old Auntie Beeb also partly responsible for the existence of the mighty ARM processor architecture? What? Well... The BBC funded Acorn Computers to build the BBC micro, along with the later RISC based BBC/Acorn Archimedes. As many people know, Acorn stuck with RISC and eventually spun off ARM, which was, shall we say, quite successful. Would Acorn have survived long enough to do that without those BBC contracts? I don't know, but if documentaries I've seen are to be believed, they may not have. So does my my phone only work because of the BBC? 😉🤭🤥.

CodeSnip v4.20.2 released

  CodeSnip  v4.20.2 has just been released. This is a recommended bug fix release. Full details can be found over on the  CodeSnip Blog .

Unit2NS Hotfix release v0.2.1-beta released 🐛

Well, of course it had to happen. No sooner had Unit2NS v0.2.0 escaped into the wild than two irritating bugs reared their heads. So here's the resultant hotfix v0.2.1. As ever you can get the hotfix from GitHub as release v0.2.1-beta . For details of what got fixed see the change log .

Unit2NS 0.2.0-beta released

I've released the first update to Unit2NS that adds a new feature. It also fixes some bugs. This release enables the program to create a "mapping" for any installed version of Delphi that supports unit scope names, without the user having to find the Delphi installation. I think pictures will explain this feature better than words. If you click either the New Mapping  or Edit Mapping  buttons on the main window you will see a dialogue box something like this: Unit2NS New Mapping Dialogue Box The button surrounding by the red box is new. Clicking it displays the Select Compiler  dialogue box: Unit2NS Select Compiler Dialogue Box Any version of Delphi you have installed that supports unit scope names will appear in the dialogue box. On my system, the only such compile is Delphi 11, as can be seen above. Select the required compiler and click OK . You will be returned to the  New Mapping  or  Edit Mapping  dialogue box, as appropriate, and will find that the list of units h

System Information Unit v5.17.0 released

Another month goes by, another update of the OS detection code in my System Information Unit rolls out. The big change this time is that Windows 10 Version 22H2 has been released , and now TPJOSInfo detects it. There have also been some updates to recognise various Win 10 and Win 11 beta & dev channel builds that came along during October 2022. As usual you can  download this release from GitHub . Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files. is 20 yrs old!

Can't believe it. is 20 years old. Looking back in my archives reveals that the first website carrying the URL was unveiled on 27th October 2002 2022 . And the page above agrees. So I thought I'd document a little of its history before I forget it. More for my benefit than yours!! Here's the home page of the first version of As you may be able to see from this page, the site wasn't wasn't entirely new. It was just the domain name was new. I'd previously being using the PJSoft  moniker and publishing a site at . That site had been around since 24 July 1999 on a Tesco owned hosting service (I think!) before moving to ContactBox on 20th February 2000. Both those hosts were free and are long gone. The site was static. Here's the front page of the last update of the old PJSoft site: It was when I discovered that there was already someone trading as PJSoft that

Pascal Syntax Highlighter BUG FIX v2.3.1 released

What a surprise. Hot on the heels of release 2.3.0 comes the bug fixed version 2.3.1 of my PasHi Pascal Syntax Highlighter . One minor bug in the PasHi command line program was fixed: a minor error in the help screen. The GUI front end, PasHiGUI ,  had a couple of bugs fixed - one was an obscure config file reading error and the other was to make the program compile from a fresh build. I'd accidentally left behind an unnecessary reference to a unit that's not included in the project. That's it. Until more bugs get found, at least! You can get the new release from GitHub .

Pascal Syntax Highlighter v2.3.0 released

Release 2.3.0 of PasHi , my Pascal syntax highlighter command line program has just been released, along with a suitably updated version of the GUI front end, PasHiGUI . The main features of this release are: A new command line option --inhibit-styling that selectively omits syntax highlighter element <span> tags where they don't need to be styled. This reduces the final HTML file size where possible. An update to the existing --trim command that allows line ends to be trimmed of spaces in addition to trimming blank lines from the start and end of source code. There a few other minor updates. For full details, see the change log . You can download this release from GitHub . I've also noticed I never did a post when v2.2.0 was released. Here are the main changes in that release: Added new --line-number-start command to enable the starting line number to be specified (when line numbering is enabled). Added new --version command to display the program's version numb

System Information Unit v5.16.0 released

This month's update of my System Information Unit is now available. Once again it's just the OS detection code in TPJOSInfo that gets a few tweaks. The main feature is that the recent public release of Windows 11 Version 22H2 is now supported. I've also updated the detection of dev, preview & beta channel releases for Windows 10 & 11. You can  download this release from GitHub . Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files.

Eye Candy Time: New DelphiDabbler website logo.

Now that is celebrating its 20th anniversary I thought it was about time to retire the old and very tired favicon and roll out these shiny new ones. Which version you see depends on the on the display size: For 16x16 and 32x32 icons For 128x128, 180x180 and 192x192 icons That old icon has been sitting there looking uninspiring since at least 2011. It dates back to when favicons were actual .ico files and had to be 16x16 pixels: Oo, exciting. Ah well, fun over. Back to documenting my code library!

System Information Unit v5.15.0

It's the 2nd of September and this month's update of my System Information Unit is now available - a whole day late! Release 5.15.0 updates  TPJOSInfo  to add support for detecting the latest Windows 11 Dev channel releases along with Beta and Release Preview   revisions of  Windows 11 22H2. You can  download this release from GitHub . Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files.

PasHi Pascal Syntax Highlighter v2.2.1 released [BUGFIX]

Just released a bug fix to my Pascal Syntax Highlighter: v2.2.1. Actually, the fix is in the GUI front end, PasHiGUI. A couple of bugs got fixed: Pressing F1 when a menu is dropped down raised an exception - down to the Delphi VCL's help system being a little over "helpful"! The About Box was displaying an incorrect version number for the compatible version of the required Pascal Highlighter command line program. Nothing major, but could be worth an update if you use PasHiGUI, but not if you only use PasHi, the command line program. You can get the update from the GitHub release page . To find out more about PasHi , see its web page and the docs it links to.

Version Information Editor v2.14 released

This is the first release in nearly 8 years of this niche little tool that I wrote to manage updating of version information resources. I've added support for macros this time, mainly so I can drag in version numbers stored in external files. I use it all the time in by build tool chain, but I expect its use may be a trifle limited! You can get release 2.14.0 from GitHub . The source code is also available from GitHub in the delphidabbler/vied repo, but be warned, it's a real mess & I'm very, very ashamed of it. The code started out in 1998 as a 16 bit program written with Delphi 1. Given how rarely I update it, I've just kept adding kludge upon bodge! 🤮

Unit2NS v0.1.2-beta Released

Just released a bug fix update of my little Unit2NS application that looks up which unit scope a given unit belongs to. This fixes a memory leak and corrects some error message formatting. Because of the memory leak fix, this is a recommended update . Grab a copy of v0.1.2-beta from the project's Releases page on GitHub. Read about the project on its web page  and get the source from the delphidabbler/unit2ns project on GitHub.

System Information Unit 5.14.0 released

It's the 1st of the month, so it's time to release another monthly update of my System Information Unit. Release 5.14.0 updates TPJOSInfo  to add support for detecting the preview release of Windows 10 22H2; various revisions of Windows 11 development, beta & preview channel releases made in July 2002; and the new alternative build of Windows 11 22H2 beta. I've also tweaked the description of some of the Windows 11 Dev and Beta channel releases in light of new information. You can  download this release from GitHub . Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files.

CodeSnip v4.20.1 released

CodeSnip v4.20.1 has just been released. This is a minor bug fix release. Full details can be found over on the CodeSnip Blog .

System Information Unit v5.13.0 BUGFIX released

v5.13.0 of my System Information Unit has just been released. This release fixes a serious (and long standing) bug  in the detection of Windows 11 21H2 builds. All Dev / Beta / Preview channel builds were being reported as a public release version. Updating is strongly recommended.  This release also adds support to TPJOSInfo  to enable it to detect the latest Windows 11 Dev channel and 22H2 Beta and Preview builds. There's also a fix for a more minor bug in detecting which of the many Windows OS versions that report v10.0 that you have. It was sometimes falsely reporting either Windows 10 or Windows 2016 server even in cases where that actually OS was a later one. When I say "sometimes" I mean very rarely, but it could happen. You can download the new version from my website or directly from GitHub . The unit can be viewed in the ddablib/sysinfo repository.

All Articles Now on - at last

At long last I've finally converted all the article PDFs exported from the old website to HTML5 and uploaded them to . Also, all the demo projects related to the articles have now been uploaded to the delphidabbler/article-demos project on GitHub. And finally, the temporary delphidabbler/articles GitHub repo, that was used to store the PDF versions of the articles, was removed. That was a long haul!

System Information Unit v5.12.0 released

In what is starting to look like a series of monthly releases, my System Information Unit has been updated to v5.12.0. This release enables detection of various Windows 11 Dev & Beta releases made during May 2022. I've also done some refactoring to make the operating system identification code a little easier to read - just a little mind you! What is more, the System Information Unit now has (another) new home on GitHub. The code has been split out of the monolithic delphidabbler/ddablib project and now has its own repository on GitHub - see ddablib/sysinfo . This change makes it possible to use the the GitHub release system to provide access to releases. You can download this release from GitHub . Just scroll down to the Assets section to either grab the source code or download a zip file containing the official release files. You can still get this, and earlier, releases from SourceForge if you prefer.

CodeSnip 4.20.0 executables now available on GitHub

I've finally managed to upload the CodeSnip v4.20.0 binaries to GitHub. Get them here .

CodeSnip v4.20.0 released

I've just released CodeSnip v4.20.0. You can get it from  GitHub . For the low down see the  announcement  on the CodeSnip blog.

Demo code made available for more articles

About a week ago I released demo code for some more articles. Now, when I say "released" I really meant that I dug out some old demo code from an obscure repo and imported it into the delphidabbler/article-demos GitHub repo! Here are the relevant articles: Articles #2 (" How to store files inside an executable program ") & #3 (" How to read data embedded in your program's resources ") shared demo. Article #5: " How to write filters that extend the functionality of the TStream classes ". Article #22: " How to call Delphi code from scripts running in a TWebBrowser ". Article #23: " How to get operating system version information ". Article #24: " How to receive data dragged from other applications ". Article #25: " How to handle drag and drop in a TWebBrowser control ". There are links to the demos on each of the above article pages. At the time of writing each of the above pages link to a PDF versio

System Information Unit v5.11.0 BUGFIX released

My  system information unit  has been updated to v5.11.0 The most important change is that the release fixes a compilation bug that affects versions of Delphi that don't support constant dynamic array declarations (which I think was introduced in Delphi XE7). Anyhow, I just tried and failed to compile v5.10.0 with Windows XE. And yes, I still use XE quite a lot. I also updated the operating system detection class  TPJOSInfo : to detect Windows 11 Dev & Beta Channel releases that have come out since the last System Information Unit release. There's also a minor refactoring. You can get the new version from my  website  or direct from  SourceForge  (direct download link).

New demo code for articles #9 & #27

I've just added demo code to my delphidabbler/article-demos repo for these two articles: How to programatically detect installed versions of Delphi How to get notified when the content of the clipboard changes The first one is new and provides code that does just what the title says. The second one has been dragged out of a old Assembla SVN repo and converted to Git. It provides a simple editor where text can be cut, copied and pasted. The clipboard change notifications are used to update the state of the Paste button depending on whether or not the clipboard contains text. Yes, I know there are other ways to do that, but it demonstrates the article simply!

System Information Unit 5.10.0 Released

My  system information unit  has been updated with the following changes to the operating system detection class  TPJOSInfo : Added detection of recent Windows 11 Dev Channel releases. Added detection of Windows 10 Fast Ring and Dev Channel releases along with 21H1 beta and 21H2 preview releases. Removed potentially erroneous detection of build 22395 as a Windows 10 22H2 preview build. Refactored code used to detect Dev Channel builds. You can get the new version from my  website  or direct from  SourceForge  (direct download link).

Delphi 11 Alexandria update 1 released

I've just installed RAD Studio / Delphi 11.1 Alexandria. I know I'm a bit late - I mean it's been out for a whole week now, but reasons! RAD Studio 11. 1 Alexandria ? You thought Alexandria was 11.0? Well it was, but unlike the 10.x changes, where 10.0 Seattle and 10.1 Berlin (for example) were different products, 11.1 is a bone-fide update to 11.0 rather than a whole new release. So it's still called Alexandria. And it can't be installed alongside 11.0, but must replace it, so it really is an update. Also the registry key where Embarcadero stores all its settings remains  \SOFTWARE\Embarcadero\BDS\22.0 , that same as RAD Studio11.0. (BTW I've got an article that lists those registry keys and talks about detecting Delphi installations. If you're interested look here .) Rather than trying to explain what's new in this release, what better than to let the crew at Embarcadero to do it for me - here's a recording of the release webinar  on YouTube and he

Focus On: HelpNDoc (part 4)

This is the fourth and final post in a series of blog posts about my experience of using  HelpNDoc  in a real life project to produce documentation for my  Unit2NS  program. In this post we're going to mop up all the subjects that were outstanding after the first three parts: Part one : An introduction to  HelpNDoc Starting a new project Adding content, including: Adding & editing topics Formatting text & using styles Creating hyperlinks Inserting images Using variables Generating help documentation Part two : Customising document output using  HelpNDoc  scripts Conditionally including content depending on the type of document. Part three : Source code generation. Keywords. Inhibiting the Copyright message in help topics. Which leaves the following subject for this post: Custom build tags Customising document output. Various topic properties not covered in parts 1 to 3. Please note that there have been a couple of updates to  HelpNDoc  since I started this series, but I hav