Skip to main content
Thoughts from David Cornelius

Software development tools and techniques explored--mostly Delphi

GetIt Dependencies Work!


When GetIt Package Project Dependencies first came out in Delphi 10.1 Berlin, they didn't work right, or at least not for me in the way I expected them. I had problems with them in Delphi 10.2 and 10.3 as well. I don't remember if I tried them or not in Delphi 10.4. However, with the new Delphi 11 Alexandria that was released last week, they DO work!

RAD Studio 11 Alexandria - First Look


RAD Studio 11 Alexandria was released Thursday. There were webinars, blog posts, and tweets about the many wonderful things in the latest major release of Delphi and C++Builder from Embarcadero. These include High-DPI support in the IDE, design-time style viewing in VCL applications, support for Windows 11, ARM-64 compilation on Apple's new M1 chip, and many other features and enhancements. I installed the update and did a little bit of coding to get a feel for how well it behaves and am quite pleased. I'll be using it more over the next several days and weeks as I shift my development, install plugins and components, and tweak the settings to tune my new work environment. Here are just a few things I noticed right away.


Desktop UX - How I Escaped Cluttered TabControls


This week's Desktop First UX Summit, hosted by Embarcadero, is a great collection of presentations by leading software development and design professionals sharing the theory and practice of creating great desktop experiences. I really appreciate the focus on desktop app design--not everything is mobile or web. One of my favorite speakers every year is Ray Konopka and he gave another great talk, this year on How Tab Controls Can Ruin Desktop UX.

Delphi Productivity Tips: Live Templates


A long time ago when Delphi 5 was king and conferences were in person, I was able to attend BorCon and saw a session presented by Mark Miller. I don't remember the topic but I do remember noticing that he was typing code really fast. He wasn't just typing fast, though, he was coding fast! As he was typing, characters were being turned into words and sometimes even full expressions. At some point, he explained how he was doing it: he was using a Delphi IDE plugin called CodeRush.

Loading a File into Advantage Database


I switch back and forth between doing cool new stuff with the latest version of Delphi on web and mobile platforms and supporting legacy apps that have been running for a long time but the original programmer has long since left. The project I'm working on today falls into the latter category and the current challenge is storing a letter template file in an old Advantage Database. My update to the software has be put into an installer script and sent out to non-technical customers to update their existing installed databases.

Delphi Productivity Tips: Built-in Shortcuts


I've been watching a weekly webinar by Embarcadero, usually hosted by Jim McKeeth, called TCoffeeAndCode and today's topic was "Managing Large Projects and IDE Performance Enhancements". This one was packed full of tips and tricks for speeding up your development with IDE plugins, better use of the keyboard, managing projects, analyzing code, and so forth. Near the end, Jim called out to programmers everywhere to blog about their favorite productivity tips and share with others what works for them to speed up software development.

So I'm taking on this challenge for myself and am starting a mini series highlighting ways I use Delphi, the short-cuts I've found useful, my favorite plugins, and other tidbits I've picked up along the way. Perhaps you will find something useful. In this first blog on the topic, I'll talk about the built-in keyboard shortcuts Delphi provides in the editor and how I use them every day.

Accidental Hack


One of the legacy projects I support was written in Delphi 7 and uses ACE Reporter. I have only used ACE Reporter once before and very little even then so don't know much about it but it seemed to work fine for what it was doing. I was tasked with adding a column to a report where the data on the report came from a temporary table that gets filled every time it prints. Adding a column to the report implied adding a column to the table. A previous experience updating tables with this app proved to take an inordinate amount of time so I wanted to avoid that if possible.

RAD Server Encrypted my Database! Or did it?


I've been using a couple of small InterBase databases for testing and learning purposes while doing some mobile and web development. I have a Windows 2016 Server in my office with InterBase XE7 and 2017 installed using different ports. Since I work from multiple virtual machines and sometimes a laptop, I just put the databases on the Windows server to access them all from whichever development environment I happen to be using. Both InterBase instances on the server were using the Developer license that comes with Delphi--requiring a restart once a day.

Automating Git Commit Signing


A few days ago, I wrote about signing your commits so they'll show up on GitHub as verified. After that process is in place, every commit requires the passphrase associated with the signing key to be re-entered. This gets old quickly if you're committing frequently (which you should). Fortunately, there's a way to cache the passphrase to make this much less burdensome. Unfortunately, the cache only lasts 10 minutes.

What can Code Signing do for you?


Have you ever downloaded an application and had Windows try to prevent you from opening it? Many times that will slow or stop malware from getting onto your computer but for contract programmers that distribute a variety of custom-built applications to clients, it can be annoying to them as they struggle to keep the download from being quarantined or deleted by their web browser or anti-virus program. Often, the download is halted simply because the application is not recognized and the publisher is unknown. Fortunately, there's a solution that doesn't cost too much and provides not only peace of mind for the person attempting to install your software but also smooths the process, eliminating warnings.

Interrupted Slide Transition


I'm writing a book about cross-platform development with Delphi and in one of the chapters that covers accessing phone features, such as the camera and location services, the demo app I present stores a list of parks with a name, picture, and coordinates for each. I put the list of parks on the first tab and a picture along with an edit box for the park name on second tab.

I somehow managed to interrupt the slide transition two-thirds the way through, leaving a funny display on the screen.



Installing and upgrading Delphi is a pretty big task. With support for eight platforms, a dozen different databases, multiple web services and servers, a rich run-time library, and an ever increasing array of programming tools and IDE productivity aids, I'm in awe that for the most part, the process is fairly smooth. I'm sure there are those still on Windows 8.1 or older or have machines with limited memory and slow hard drives that bemoan the time it takes or incompatibilities they encounter.

Dev Machine Setup List


I do almost all of my development from virtual machines. I use VMWare Workstation Pro for this and it has served me well for many years. I like the snapshot and cloning aspects plus being able to move a machine to a different drive, back it up, and even put it on my in-office Windows server and free up local memory and hard drive space.

As I've done this a number of times, there are some steps that I replicate on every machine for consistency and convenience. Everyone will have their own way of doing things and favorite tools--these are mine.

Delphi Locked-up with Git


I needed to reinstall Delphi 10.2 recently and when I did, I finally decided to check the box that asks if you want to hook up a source code repository. I've always managed source in repositories outside of the IDE, but decided to see if and how much productivity improvement could be had it was built in with the project manager. I use Git so selected the installed git-cmd.exe file when prompted.

Multiple InterBase Instances


Way back in 2000, InterBase 6.0 was made open source. Soon a fork was made in the code and Firebird SQL was born. I started using this new powerful database engine and as InterBase went back to being a closed-source product, stuck with the free version or used other database engines. Many tools and Delphi component sets still support both IB and FB as they are still quite similar.

Path Size with Multiple versions of Delphi


I work on a variety of projects in several different versions of both Delphi and Visual Studio. A lot of these projects also include database access. To support all these different projects, a lot of different tools need to be installed and with each comes a set of paths that are setup for the applications to find libraries, support tools, and so forth. Since most software tools can also generate both 32-bit and 64-bit code these days, there are often two sets of paths for each type of compilation.

Subscribe to Programming