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

Delphi is my everyday language. The programs on this page were created in Delphi Studio 2006, and some older ones in Delphi 5 Enterprise. For the most part, they should be compatible with any Delphi version 5+ but I'll note any exceptions. Any 3rd-party libraries or components required to build the 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.

LogicLib

LogicLib
This is my personal code library. Most of the projects on this page require at least a little bit of this functionality if you want to recompile them yourself. The name is based on my company, Illuminated Logic, LLC. Full documentation is included in LogicLib.txt (created with LibDoc!). Installation and build instructions are included as well. Many units have compiler directives to allow them to be built in a number of different Delphi versions. Numerous units contain DUnit test cases, and I have included the DUnit (v9.3) test rig project. The test case code is only seen by the compiler when DUNIT is defined.
157K, updated 2017-01-16

Projects With Executables

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

BatchDate
This console utility allows you to easily use fancy date formatting in your batch files. After calling the program and the little batch file it creates, the date strings are available as environment variables. Run without arguments for instructions (or see usage.txt).
61K, updated 2017-02-11
Checkbook
A simple but powerful checkbook register program that keeps its data in a CSV file. I use this program every day! It now has a Category column and built-in categorized expense reports. Includes a readme file with instructions.
326K, updated 2017-02-12
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. Built in BDS2006 to take advantage of and demonstrate the TStrings.StrictDelimiter property. It includes compiler directives so it can be built in older versions with the new functionality disabled.
238K, updated 2015-10-22
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
Very similar to BatchDate, but with a slight twist; instead of creating a little batch file that your program needs to call and delete, this one sets the environment variables first and then launches your program or batch file as a child process. All your program needs to do is use the variables.
63K, added 2017-02-11
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 2016-08-18
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.
266K, updated 2016-11-15
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.
68KB, added 2010-10-09
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.
198K, updated 2006-04-26
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.
281K, updated 2016-12-27
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.
68K, updated 2016-02-03
Touch
My take on the classic command-line file date/time updating utility.
56K, added 2008-05-12

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

License

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