Here you'll find handy utilities, interesting code examples, and concept
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.
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
234K, updated 2009-02-19
- 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 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
- 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
274KB, added 2010-02-02
- 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
177K, updated 2007-02-12
- 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
- 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
198K, updated 2006-04-26
- 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
- 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
- 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
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
- 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
68K, updated 2016-02-03
- My take on the classic command-line file date/time updating utility.
56K, added 2008-05-12
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
- 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
- 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
- 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
- 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
9K, added 2006-03-01
- 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
- 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
The works on this page by Ray Marron
are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.