DelphiForFun Home

Home  |  Introduction  |  Newsletters  |  Programs  |  Feedback



Search WWW



Support DFF

 If you benefit from the website,  in terms of knowledge, entertainment value, or something otherwise useful, consider making a donation via PayPal  to help defray the costs.  (No PayPal account necessary to donate via credit card.)  Transaction is secure.

If you shop at Amazon anyway,  consider using this link. 


We receive a few cents from each purchase.  Thanks



The index page for all Programs on the site?

The DFF Play CD?

Zipped file DFF Play contains  executable version of about  75 of the 200+ programs from the site, mostly those I particularly liked or thought would be of widest interest for non-programmers.  The file is rather large, about 20mb..

Anything else?




Search WWW



Not a programmer (yet)?

 That's OK -  the executable version for any puzzle or  game you find here is available for download.  Just scroll down to the bottom of most any description page and you'll find a "Download executable" link. Downloaded programs are in "zipped" format to reduce size and may require an "unzipper" program unless you are running Win XP or later.  Here's a link to a free one. 

Check  out  the Most Popular  Downloads from DFF   (updated weekly)

First time visitor?

Take a look at the Introduction page to see what this site is about

Notes for Teachers


What's New


May 28, 2016:  A fix applied last month to our Cutlist program (See April 3, 2016 "What's New" post), introduced a problem which prevented the printing of user generated solution diagrams.   Cutlist Version 4.04 was posted today to correct this problem.

May 27, 2016:  May has been a busy month - one granddaughter earned her Dr. Pharmacy degree and another got married.  We travelled to attend both.  We're proud of Kristen and happy for Sarah.  Coincidentally, if things go as planned, we will be attending Kristen's wedding and Sarah's graduation as a Chem. Engineer next spring!  

The intervening days were spent catching up with mowing, garden care, tree trimming, etc.  Evenings allowed me to complete the DTMF (Touch-tone) Decoder Test program.  Here's a picture of the device put together by the family Electrical  Engineer (my son) which listens for tones and sends the  decoded digits to my program for display.  Probably not of interest for the majority of viewers, but if it is, visit the link for more details. 

April 25, 2016:

In this No Close Neighbors Mensa Calendar puzzle solver, the user or the program must insert the letters A through J, one per square, so that no two letters in alphabetical order are in squares that touch in any way, even at the corners.  Three letters have been placed to get started.   In addition, the program has a "Build" mode allowing users to define more puzzles.  The two known "ready to build" examples are included.    

April 15, 2016:

 One more feature was to our Latitude/Longitude distance calculator program today.  When calculating an end point from a start point, direction and distance, Latitude Longitude Distance  Version 3.2  lets the user to choose between Great Circle  and Rhumb Line travel .  Great Circle travel is the shortest route between two points, but requires continuously adjusting the direction of travel.  The new Rhumb Line option allows one to travel at a constant bearing from where you are to where you want go or to explore what lies at a a given direction at a given distance.  Just know that constant bearing (Rhumb line) travel is the simplest, but not the shortest way to get there.              


April 3, 2016:  

CutList is a program which looks for optimal ways to cut a list of rectangular parts from a list of available supply pieces.   The program is  popular but too complex to work on for fun these days, so until I get around to create a commercial version, I code bug fixes only.  Finally, after two years, another bug was discovered and fixed.  When printing layout diagrams for a solution with no other lists selected, the  layout printing was incorrect.  Only the final page of supply piece diagrams would be printed.  It was fixed today with Cutlist Version 4.03.   The layout diagram page titles now also show which solution is being printed.  

March 25, 2016:   I first posted a program to calculate the distance between two points on the earth's surface in 2004.  Distance is understood to be the shortest distance which is slightly mind-blowing when  the Great Circle Route says that if you fly from New York to London,  you must fly north over Newfoundland first !  Except at the equator, the shortest path to a location directly East of you involves starting out in a Northerly  or Southerly (Southern hemisphere) direction and arrive traveling slightly South (or North). 

Latitude Longiitude Distance Version 3.0 posted today is in response to a request from a blind(!) Delphi programmer working on a program that will allow other blind people to follow Great Circle routes from point to point and "explore" where they travel along the way.    To do this Stefan needed a way to plot the bearings at steps along route.  Version 3.0  does that by displaying points traversed when moving from given a starting bearing and a total distance.  User can select 1, 10, or 100 steps and see the coordinates and the new bearings at each step along the way.   I wish him the best in adapting this code to his application.

In the process, I uncovered an occasional "final bearing" error in my previous implementation of the  algorithm which finds points from distances.  I made, and now use, a conversion of a National Geographic Information System  (NGIS) Fortran program which is not only simpler, but eliminates the error.      


March 18, 2016:

An intermediate level exercise posted in our Delphi_Techniques code section based on a a user's request for help drawing doors subdivided with  one or more vertical frames separated and divided by mullions of a given width and position.   Find out more and download source and executable file at DrawingDoorFrames
March 3, 2016:  Graph searching is a powerful tool for solving problems which move from state to state as it is solved.  Think of a graph as a bunch of nodes (points) connected by edges (lines). These might  be cities connected by roads or  house connected by water lines, etc. where finding shortest paths might have real value.   Most board games and puzzles are can also be represented by graphs where nodes are board states and edges are the moves that get from one board state to the next.  For example, the February 20 "Coal to Diamonds" puzzle below can be the initial node with nine edges running to the 9 boards (nodes) resulting from clicking on each of the 9 squares.  Each of those in turn will have up to 9 new edges as the next possible moves, etc.  Eventually, there will be an all diamonds board (the solution) and the search objective is to find the shortest path from node to node which connects the initial board with the goal board.

Shortest 2 to 10 path:


The original demo illustrating the Dijkstra algorithm (method) for finding shortest paths, calculated the shortest path from Node 1 to node 10 of a sample graph using random weights (distances) from node to node.  The search was one-way (i.e. could only move to higher numbered nodes), but a programmer recently modified the program to search from node 2 to node 10.  A problem surfaced when the shortest path happened to be 2-1-3-7-10 which required traveling backwards through node 1.  Shortest Path Demo Version 2.0 posted today incorporates two-way searching and allows users to specify both the start node and the goal node.  



February 21, 2016:  For programmers -  I wrote a Countdown timer control several years ago because I needed one for a puzzle program with a time limit.  I later modified it to also "count up" in order to time long-running programs.  I just added an "TimerPop" event exit to let the calling program check once per second to take any desired action based on run time or time remaining.  The control is included with Countdown Demo Version 2.1 which now tests the feature by beeping once per minute.        

February 20, 2016: 

Coal to Diamonds is a wicked hard puzzle to solve.  "Coal" is changed to "Diamond" in a thee step process. Each click of a cell of a 3x3 grid advances all elements in that row and column by one step.    A high school student learning Java (L) had a version of this puzzle in a coding competition except the goal was all coal instead of all diamonds   ([000 000 000] instead of [333 333 333]).   I cleaned up some of the screen formats and text and added user control of the goal state in Coal to Diamonds Version 2.0

  February 14, 2016:  Aussies always like to break the mold and do things differently.  They did it again with Daylight Saving Time (DST) calculations:  Time Zone Demo Version 2.1 fixes two problems uncovered by a Brisbane programmer when he reported the demo program crashing.  Problems when DST crosses a year boundary or regions with no DST at all (like Brisbane!) should now be fixed.  The program  now reports correct end dates for Southern Hemisphere regions and "no DST for this location" instead of crashing when there is none.   Changes have not been tested, but someone down under will surely let me know if  the problems still existJ.       

February 10, 2016:  Sound Generator is a program which can create complex tones by combining multiple frequencies.  Sound Generator Version 3.0  uploaded today adds an option to easily create the "Touch-Tone" sounds used in modern landline telephone connecting protocols.   The technology referred to as Dual Tone Multi-Frequency, DTMF, encoding. It combines two frequencies to create 16 distinct tones for  digits '0' through '9', letters 'A' through 'D', plus '*' and '#' special characters as illustrated in this grid at right.  Multiple characters in a string may be played and saved  in a "wave" audio format file.  This may prove useful in a future program decoding audio tones back to characters.     

The What's New Archives

(Click to expand)


  [Feedback]   [Newsletters (subscribe/view)] [About me]
Copyright 2000-2016 , Gary Darby    All rights reserved.