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
The works on this page by Ray Marron
are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.