Here you'll find handy utilities, interesting code examples, and concept tests.

Subscribe to the RSS feed to be notified of updates and new releases.

Delphi is my everyday language. The programs on this page were created in Delphi 10.2, Delphi Studio 2006, and some older ones in Delphi 5 Enterprise. For the most part, they should be compatible with any Delphi version 5+. Any 3rd-party libraries or components required to build a project will be noted.

All of the projects include source code. I have separated them into two groups -- those that are useful or interesting to anyone and include an executable, and those that contain only source code.

I'd love to hear from you! If you find one of the programs useful, find a bug, have an idea for a feature, or even a whole new utility that you wish was available, please drop me an email. I'm always looking for something interesting to work on.


Aug 2022: I finally got a new Windows 11 machine and am in the process of updating the freeware to look right and scale properly on High DPI displays. If there's one you use frequently that has an annoying display issue, please let me know and I'll look there first. So far, Checkbook is done.

Table of Contents

Freeware with Source

In addition to serving as programming examples, these programs do something useful or fun, so an executable is included.

Checkbook
A simple but powerful checkbook register program that keeps its data in a CSV file. I use this program every day! It has categorized expense reports, and includes a readme file with instructions. Click here to see a screenshot.
969K, updated 2022-08-16
CSView
A utility for viewing the contents of CSV files in a handy format that doesn't require Excel. It uses the LogicLib CSV parsing function that should support everything mentioned in the CSV RFC 4180, including multi-line quoted fields. It can also parse using TStringList.DelimitedText with or without the StrictDelimiter option. 2023: 64bit and remembers settings, keeps field position when changing records.
1155K, updated 2023-07-15
CSVScript
A utility that takes CSV data and merges it into SQL scripts (but it doesn't have to be SQL). I make use of this frequently at work. It allows you to use conditions to skip rows that you don't want in your output, and you can modify each piece of data with things like formatting and smart quoting. You can save and load job files, and run them from the command line.
915K, updated 2022-10-28
DateCalc
A date calculator that allows you to add or subtract any combination of years to milliseconds with a date/time value. Also displays the value as a numeric Delphi TDateTime and lets you convert back and forth. Shows off a few of the capabilities of the LogicLib llDates unit.
257K, updated 2017-01-26
DateVars
A console utility for using fancy date formatting in your batch files by way of environment variables. It can create a little batch file you can call to set your variables, or it can set them and then call your program as a child process. Run without arguments or see usage.txt for instructions.
65K, updated 2018-09-07
DelAged
A console utility with more flexible options than FORFILES for deleting files older than a certain date/time, including deleting empty directories. Run without arguments for instructions (or see usage.txt).
63K, updated 2017-04-14
Gradient
A little project to draw an even gradient from one color to another on a canvas and identify the color under the mouse cursor. Not terribly useful, but fun to play with so it includes an exe. Requires D6+ to recompile as it uses ExtCtrls.TColorBox.
234K, updated 2009-02-19
LibDoc
A utility to create library documentation from specially coded comments in source code files. Runs interactively or via command-line parameters for use in a build script. All the source of LogicLib is commented for use with LibDoc. Includes detailed instructions.
267K, updated 2019-08-17
LogRoll
LogRoll is a console utility for managing log files (or backups, or whatever). It can rename, zip, truncate, copy, etc. It makes use of replaceable date tokens to allow for very flexible file naming options. Fully documented.
73KB, updated 2017-04-14
NerdComm
This is a little serial comm reader I threw together to read the output from my NerdKit (www.nerdkits.com) projects. Very simple, it just opens the specified com port at 115200:8:N:1 and reads CRLF-terminated strings until you tell it to stop. It uses a little freeware comm class I downloaded from Torry's (included).
274KB, added 2010-02-02
NumWords
Every programmer has seen (if not done) a version of the old check writing number-to-words routine, but years ago somebody on the Borland newsgroups asked about converting the words into a number. I couldn't resist, and this project does both. Since it might be interesting for a non-programmer, it includes an executable.
177K, updated 2007-02-12
QuasiCalc
This is actually a fairly old project, recently re-discovered. The game Star Control 2 was my favorite space game of all time, and it had a way of navigating the galaxy called "quasi-space". This is a distance/fuel-use calculator for using quasi-space portals. The game has since been open-sourced under the name "The Ur-Quan Masters"!
274K, updated 2017-01-29
RandFile
A program that generates files full of random, nearly incompressible data. This is useful for testing programs that use compression, disk spanning and file splitting/joining. It could also be used as part of a secure delete process by filling empty space on the disk with random data. It works from the command line, too.
842K, updated 2019-12-08
RMBackup
A utility I wrote for doing my daily backups across the LAN. There is great control over what gets included/excluded and detailed logging. You can even chain multiple backup jobs together or run them as scheduled tasks. The backup job definitions are simple name-value text files. Full instructions included.
321K, updated 2016-12-29
RMDice
A dice rolling app that goes beyond the standard "3d6" gaming notation and allows for special rolling rules like counting hits, re-rolling misses, rolling extra dice, dropping the lowest die (e.g. "4d6.droplow1") and more. It keeps track of your most recent rolls and allows you to assign up to 9 quick-roll buttons. Includes a detailed readme file.
242K, updated 2016-12-15
RMSplit
An easy to use GUI file splitter and joiner utility. Accepts command-line parameters for automated use, too. It not only splits on size, but lines of text and allows for start/end text markers. This is handy on things like SQL script files where you don't want to split a command across two files, you can have it split only after a GO command. For a big XML file you could have it split only after it finds a line that starts with a certain open tag to avoid splitting entities.
287K, updated 2019-09-06
SBPDraw and SBPShift
A friend of mine has a computer-controlled (CNC) router table. These utilities will respectively display and adjust the ShopBot (*.SBP) data files that tell the router what to do. SBPDraw has examples of scaling and drawing directly onto a canvas and includes a sample SBP file. SBPShift is used to move a project's origin to a specific or relative position and accepts command-line parameters making it suitable for batch adjustments.
253K and 183K, updated 2007-08-11
SuperCopy
This console utility does bulk copying/moving/renaming of files with very flexible options for the placement and naming of the target files. Run without arguments or read usage.txt for instructions. The latest additions are LIKE pattern matching and the ability to replace text in the output filename.
70K, updated 2017-04-16
Touch
My take on the classic command-line file date/time updating utility.
56K, added 2008-05-12

Return to Top

Example Projects

These projects are of interest primarily to other Delphi programmers, so do not include a binary. They typically include classes or functions to put into your own programs, or are simply working examples of interesting or non-obvious programming solutions.

AutoQuit
An example of automatically shutting down a program after a period of inactivity. It shows how to monitor application-based or system-wide mouse and keyboard activity to keep track of idle time. It also demonstrates how to close open dialogs when shutting the program down.
6K, added 2007-01-28
BuildDate
A utility that creates an include file to get an easily accessible build date constant into your Delphi program. See the readme.txt for instructions.
2K, updated 2008-02-15
Mutest
A project showing how to use a mutex to prevent an application from being run more than once. It also shows how to use WM_COPYDATA messages to communicate with the already running program.
5K, updated 2016-08-18
PgAsyncQuery
A class for interfacing with the PostgreSQL client dll and running asynchronous queries. Based on Zeos library code and created because of that library's lack of asynchronous, cancellable queries. This archive includes the class and a complete project demonstrating its use. See the readme.txt for more info.
9K, added 2006-03-01
SkypeTest
A simple project that communicates with the Skype API using window messages. You need to have Skype installed for this to do anything.
4K, updated 2008-02-29
Terminator
A project demonstrating the use of CreateProcess and TerminateProcess, and how to monitor the processes you start to see when they finish.
5K, updated 2007-02-06

Return to Top

LogicLib

LogicLib is my personal code library for Delphi. The name is based on my company, Illuminated Logic, LLC. Most of the projects on this page require at least a little bit of this functionality if you want to recompile them yourself.

LogicLib
This is the currently maintained version of LogicLib tailored to Unicode-native versions of Delphi. Built and tested in 10.2. Full documentation including installation and build instructions can be found in LogicLib.txt (created with LibDoc).
160K, updated 2022-08-08
LogicLib2006
I "forked" LogicLib after moving from BDS2006 to Delphi 10 with its native support for Unicode strings. This is the older version that largely assumes that strings are single-byte. It supports compiler directives that allow the library to be built in a wide range of Delphi versions, at least as far back as Delphi 5. Numerous units contain DUnit test cases, and I have included the DUnit (v9.3) test rig project.
203K, updated 2020-08-15

Return to Top

License

Creative Commons License
The works on this page by Ray Marron are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.