Software development tools and techniques explored--mostly Delphi
InnoSetup Examples
Category
In the latest video of Embarcadero's 30 for 30 series, Ian Barker gives a great overview of many of the popular installation builders to help you package and distribute your applications to virtually any platform. One of the most popular tools for us Delphi programmers targeting Windows is InnoSetup, a free and open-source tool by Jordan Russel. This solid program has been around for a very long time, it can handle nearly any Windows-based installation needs, AND is written in Delphi! I thought it might be useful to share some of the things I've done with it over the years as examples of how it can be used; you never know when a technique might be useful to someone (or even my future self!).
Step Up Memory Leak Debugging
Category

Introducing WebStencils
Category

Data Connection Backups
Category
GExperts - A Most Awesome Delphi Companion
Category
Take Control of Your Delphi Project
Category
You can (and should) have complete control over all aspects of the version information, application icon, operating system compatibility, requested user access, Windows theming dependencies, and more in your Delphi projects!
Delphi as a Build Machine
Category
Flexibility With Runtime Packages
Category
ChatGPT can write Delphi code
Category
Moving to Delphi 12
Category
Delphi 12 Athens has been out for nearly a month now and there are many fixes and improvements over its predecessor. It's still not perfect but I'm moving all projects I had in Delphi 11 up to the latest version.
Delphi 12: All the Icons at Once!
Category
Coming in Delphi 12 is very cool feature that will save cross-platform developers a lot of time. But first, a reminder: 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.
Delphi 12: More Syntax Highlighting
Category
As I've been going through the Delphi 12 beta, I'm delighted to see many fixes and enhancements in the IDE to help the programming experience feel more fluid and intuitive. As with all beta versions being discussed, 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.
Delphi 12 is Coming!
Category
Code Better in Delphi - by Alister Christie
Category
The author of Code Faster in Delphi has just released his second book, Code Better in Delphi--and it is just as packed with useful coding techniques that will improve the way you write software as the first. The book is an easy read with short, clear examples that illustrate the concepts presented.
Creating a Delphi Welcome Page Plug-in
Category
There have been several iterations of the Delphi IDE's Welcome Page, or the first page that you see by default when you start Delphi without a project. This space has been used for keeping a list of favorite projects for convenient loading, marketing of related products by Embarcadero, and quick links to tutorials and resources. Delphi 11 introduced, in my opinion, the best interface yet as it's completely customizable by the user and provides an API for writing your own plug-ins to provide additional functionality.
Go!
Category
For Historical Purposes
Category
Early in my career, I was studying the code of an application written for the Apple II in preparation for developing something similar on the PC and would often ask questions of the original programmer. Most of the time, I'd get valuable information about the purpose of a routine or why something was done a particular way. But every once in a while, when pressed for an explanation, the programmer would think for a minute, then simply utter, "For Historical Purposes" and walk away chuckling.
Thankful for Delphi
Category
This time of year in the United States is marked by a major holiday, Thanksgiving, the last Thursday of November. It is during this time that ad campaigns, religious organizations, and families everywhere tend to step up their recognition of everything they're thankful for. As a software developer, I'd like to hook into this theme and highlight features of programming tools I use that make my life better--most notably, Delphi--and create my own "thankfulness" list.
Multiple Installs of Firebird
Category
Using the Vault API
Category
Nearly two years ago, Idera acquired apilayer, a collection of various cloud-based APIs. Idera being Embarcadero's parent company (and Embarcadero being the publisher of my favorite development tool, Delphi), I was interested to see what this was all about and looked at the handful of APIs available. One caught my eye and I made a note to come back and check it out more when the time was right.
Delphi Debates: With, Goto, & Label--and Exit
Category
The Delphi Debate series continues with another topic that has been discussed back and forth for ages. This time, instead of a procedure or function in the RTL, we are talking about three reserved words: the with, goto, and label statements which pre-date Delphi--they are part of the core Pascal language itself!
Delphi Debates: Assigned
Category
As a Delphi MVP, I was surveyed on my stance of the use of FreeAndNil
. In that questionnaire was included a question about the use of Assigned()
. Really? Is that debated as well? I couldn't find anything on the internet debating this except for an old discussion on StackOverflow. I use this function frequently and as I looked more deeply at what it does, I'm even more confident of its use.
Delphi Debates: FreeAndNil
Category
When freeing an object in Delphi, simply calling its Free
method calls the object's destructor
and releases the memory allocated to the instance of the object. But it doesn't change the address of the referencing variable which, therefore, still points to the place in memory where the object existed. The released memory can be quickly reused by other objects or resources and if you try to access the object again without re-creating it, you could get an Access Violation or some other error or worse yet, unpredictable behavior.
Delphi's Find in Files Trick
Category
You've probably used Delphi's Find in Files feature to search for an identifier or library function through multiple folders of source code. If you have backups of your source or multiple projects with copied or similar sets of routines and check the "Include subdirectories" checkbox, the search results could contain a lot of duplicates taking extra time to wade through them all. Wouldn't it be nice if there was a way to fine-tune the folders being searched?
There is!