DelphiForFun Home

Home  |  Introduction  |  Newsletters  |  Programs  |  Feedback




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

April 23, 2017:








Yesterday, April 22 was "Earth Day" and this was the puzzle of the day in our Mensa Puzzle Calendar.  Writing a program to solve it took a few hours on this rainy Sunday.  Here are the puzzle rules:

Place five copies of  the letters EARTH in a 5x5 grid, one letter per cell so that the same letter never occurs more than once in any row, column, or diagonal - even the short diagonals.  Four letters are pre-placed get get you started.

 Users may enter characters to solve the puzzle on their own, however only ""guided" mode is available for now.  There is also a "Solve it"  button to allow the program to search for a solution.  Search should succeed in a second or two. More information and the program download link are on this EarthDay page.

April 21, 2017: Here's a Delphi demo, HeapsPermute, of an algorithm developed by J.R. Heap in 1963 which generates permutations of arbitrary data items. It is quite efficient because it swaps only 2 elements for each permutation generated. The disadvantage may be that that there is no apparent order in the generated permutations.  Search "Heap's algorithm" on Wikipedia for more information.  I plan to use the algorithm in a future "Made from scratch" puzzle solver which doesn't use the existing DFF Library. 

March 28, 2017:  We're back!.  If you received a "Service Unavailable" message in the past two days, no worries.  The host site maintenance  guys mess up and cause this about once a month.  It's usually only a couple of hours, but this time it was 2 daysL.  I'm guessing that the root cause is that the DFF site runs under FrontPage, a terrific website builder abandoned by Microsoft years ago with no suitable conversion aids or equivalent replacement available.  Manual conversion to something less usable is an easy task to defer, so I'm limping along with the old, unsupported builder program and not many choices for finding another host.    After careful cost/benefit analysis, my conclusion is that what happens in the future is a problem to be  addressed in the future.  

In the meantime, I discovered a small bug in an old beginner's level program which generates odd order "magic squares" up to 51x51 using an ancient algorithm.  Magic Squares V1.1 corrects a grid sizing problem for the 3x3 square.  

March 19, 2017: CutList Version 4.05 posted today  corrects a few misspelling and truncated text errors  caught by a couple of sharp eyed users.  Thanks to Karson and Anthony for taking the time to let ne know.


March 6, 2017:  Several years ago, a buddy of mine took on the  design and implementation of a children's water fountain with multiple nozzles squirting at random intervals and durations.  I created an animated simulation to illustrate what it might look like.  The result was posted here in the "Delphi Techniques" section as an example of how to draw on a graphic control. (a "TNozzle" in thus case).  You can view a picture of the resulting real "Splash Pad"  here.

 A Delphi programmer recently sent me his attempt to move the TNozzle  class to a separate unit and found that the his drawing attempts were displayed in the wrong place.   The solution was to draw on the  canvas of the TNozzle Parent property.   ShapePaint Version 2.0  demonstrates how to do this. 



February 27, 2017:  A programmer trying to convert Latitude/Longitude coordinates to points on a Mercator projection recently wrote asking for help.  I pointed him to our Traveling Salesman Program which uses a standard map with locations assigned Latitude and Longitude coordinates and  computes the shortest distance to visit all of a selected set of locations.  However the program would not compile with Delphi versions after Delphi 7.  Traveling Salesman  Version 3.1 posted this week uses compiler directives to determine Delphi version and generate code which should compile under old or new Delphi versions.  As usual when a program is revisited, text errors were corrected and forms layout and displays improved over the previous version.         

February 14, 2017:  I re-posted the clean copies of the five corrupted  program executables  removed 4 days ago:

  • DTMF Reader,  A hardware & software project that listens to Touch Tone  (Dual Tone Multiple Frequency) phone line signals and decodes them to show or save the numbers dialed.
  • Instant Insanity: A bare-bones solver of a puzzles requiring that a stack of four cubes with one of 4 colors on each face be arranged so that each side of the stack shows all 4 colors.     
  • Missionaries:  A user playable solver of the traditional river crossing puzzle involving a small boat, missionaries, and cannibals who love to eat missionaries if they get a chance.
  • Syllables:  Knows how to split words into syllables using a data base and rules.   I'm going to enhance this one to also syllabize foreign words in our DFF dictionary.       
  • Volume Control Demo:  How to change the computers speaker volume with a Delphi program.  

February 11, 2017:  It looks like Google rescanned the website last night and gave us the all clear "Get out of jail card".  All files can be downloaded today by any browser without warning messages.  Whew! 

.February 10, 2017: Some users have been receiving  "Malicious website" warnings recently when they try to download zip files containing executable files from DFF.  The warnings are (were) triggered by 5  infected files.  For now I have removed these files:,,, Syllables,zip, and   The infections occurred on the website and nothing has shown up as infected on my computer.   The source code for these 5 programs is not infected and still available on the website.  Browsers should remove the warnings when they get around to scanning the website again.    Until then, Google Chrome will actually issue a false positive for ANY executable download attempt, declaring it to be infected when it is not.

It's disturbing that  these infections could occur with no symptoms.  I have changed my master password for the website and will be checking daily for any re-infection.  

In the meantime, if you want the executable for other programs and receive "Malicious site" warnings , a user pointed out a free anti-virus scanner VirusTotal, which will scan and verify any link.   There are a number of  free, easy to use,  "website malware scanners" available  online.  The most useful ones actually download and scan files for virus infections.  These report the website as "clean" today.  Others merely check blacklists and report the website as infected when it find the URL on any list.  Those are still erroneously reporting the website a infected based of the list created by Google Chrome.   Hopefully we will soon be given a pardon by Google.   


February 5, 2017:  It's been 10 years, since my last visit to the Catapult Simulator.   A grandpa is currently using the program with his grandson to design and build one that will throw a Hershey's Kiss 31 feet! The program needed a few tweaks to handle a projectile weighing a fraction of an ounce, but  Catapult  Simulator Version 2.2 should do it.  For display purposes, here's a sample design that throws a 1 ounce weight about 8 feet.  1/5 ounce Kiss would go much further.



February 2, 2017:  One of the shortcomings of prior versions of our Square Word Grids program was their inability to solve 5x5  problems except when it generated them.  I'm embarrassed to admit that I forgot about rewriting the program in October 2015, and renaming it to "Double Word Squares".   The good news is that the the older versions could not solve this recent Mensa Calendar puzzle that today's posting does, so the January coding and debugging hours were not in vain.  Check out Square Word Grids Version 3 to see if you are as smart as the program. 


January 24, 2017: 

In 2002 I posted a simulation of a "machine" that played TicTacToe with 304 matchboxes representing all unique grid configurations and colored beads for each available cell in that configuration.  The machine, MENACE, was invented by British Researcher Donald Michie in 1960.  I've forgotten the entire expansion of the MENACE acronym, but the "NAC" part stands for "Noughts And Crosses", the British name for TicTacToe.  

The machine plays first and plays X's .  It learns as games are played by increasing the number of beads  in positions with X's in each box (moves are boxes) which led to the win  and taking beads away for losing  box  sequences.  I was contacted last month by a programmer wanting to investigate alternative learning algorithms.  That led me revisit the program, which led to TicTacToeMachine Version 2  posted today.   The new version has more options for watching the machine learn and more strategy choices in "AutoPlay" mode when the program is playing the role of opponent.

January 1, 2017:  HAPPY NEW YEAR!!

December 21, 2016:  A recent "simple" logic problem from my trusty Mensa Puzzle calendar caused me fits when  tried solving it with my Logic Problem Solver program.  The problem "Thanksgiving.prb", contains the clue "Chris ate more turkey than the person who ate the slowest".   In my transcription from the calendar, I typed "fastest" instead of "slowest" which made the problem unsolvable.  After many hours of looking for the non-existent program bug, I finally went back to the original and discovered the real problem (me!). Logic Problem Solve V5.7 posted today does a better job of diagnosing invalid rules as they are entered.  I wouldn't detect my typing errors, but might shorten the time before rechecking inputs,  

December 12, 2016:  TInteger is Delphi class supporting mathematical operations on arbitrarily large integers.  Methods were added today to allow these integers to be converted to  number bases other than 10.  (Remember from middle school that each position in decimal represents a power of 10 -- the 1's column, the 10's column, the 100's column, etc.  Binary numbers, base 2, have the 1's, 2',s, 4's, 8''s column, etc.).  Any integer , even one with thousands of digits ,can now be converted to or from a string in any base from 2 to 256.  More information at this Big Integers page.   I have no good reason for doing this except perhaps just for the "fun of it".


December 6, 2016:

Time marches on, whether we welcome it or not.  With Christmas fast approaching, I decided to get any postings for this month out of the way early.  Here's the first/

Several months ago, I posted a program to solve a puzzle type which requires placing letters in a grid so that no two alphabetically adjacent letters are in adjacent grid cells, horizontally, vertically, or diagonally.   NoAdjacentNeighbors, V2.0 allows solving the first version of this puzzle type that I've found that is not based on a 4x4 grid;  This one is  5x3 and motivated me to update the program to allow multiple puzzle sizes.  I also added the ability to name, save, and restore puzzles.  (After reentering this one the first dozen  or so times while testing, I decided that saving/restoring was a good feature to have!) 


November 16, 2016:  I've been working on testing and implementing some changes triggered by the availability of the free Delphi 10.1 Berlin (D10) compiler download.  It has many enhancements over Delphi 7 (D7), and is a good candidate for new programs.   The bad news is that many of the several hundred D7 based programs on the site would require at least minor modifications to compile on D10.   Many of the differences are not new, but previous Delphi versions had price tags in the hundreds of $.  Converting D7 source code to more recent versions is not something I look forward to doing "for fun".  So here's the evolving approach and what I've changed so far:

 A viewer recompiled our Akerue word finding game under D10 and reported that it compiled but did not recognize words entered by the user.  The problem was that our dictionary program required changes to account for a new default string format using 16 bit rather than 8 bit characters; necessary for languages non-Latin alphabets, but a pain in  the you-know what for us.  The library unit which handles dictionary access has been updated to use 8 bit character strings and Akerue is working for compilation under D7 or D10.  The updated library can be downloaded from that page and also from the other big dictionary user, WordStuff, which is wrapper for  six other word oriented puzzles.    I also updated our Delphi 7 - Delphi XE Differences page to include some notes about the D10 conversion steps recognized so far.                

October 30, 2016: What does it take to be a good problem solver?  It's a question that has  interested me for years, primarily because the world needs more of us J.  Farmers, detectives,  mechanics, doctors, scientists,  artists, and programmers are just some of the occupations where success is closely related to problem solving skills.   I'm sure of some of the common characteristics (fact gathering, planning, divide & conquer, persistence), but there must be others.  I should add "welcoming constructive criticism" to the list.  I find it difficult to think about problem solving while doing the problem solving.  Today's program, Grid Subdivisions, is a first attempt at documenting my processes, for programmers at least.   

October 24, 2016:  A viewer reported today that our CPU Speed demo program is being flagged as a virus or malware by some systems (including mine when I checked).   The timestamps  and size on the site match my local version, so I'm quite sure that it is a false positive for the imported item.   I've left the source download in place but removed the executable download link.  The source can be recompiled and run locally with no problems.   Non-Delphians will have to find another source.    Increased security rarely makes everyday operations easier, but it is the price we pay to avoid the catastrophic.   

October 23, 2016:

 Two programs were updated today based on today's Mensa Calendar puzzle asking for 3 and 6 letter synonyms using all 9 letters in the word CARPOOLED.  My Unscramble program  is part of my favorite word puzzle solver collection, Wordstuff3, and should have been able to solve it, but did not.  It turns out that the three letter synonym is PRO which our dictionary categorizes as an abbreviation which are not searched by default.  Whether it is may be debated, but Unscramble had a hard-to-find option to include abbreviations which led me to cheat and peek at the answer.  Selecting non-standard words like abbreviations is now  much simpler with Unscamble V2,   In the process of researching the problem,   I also corrected some text scaling problems in the DicMaint  dictionary maintenance program which allows words to be categorized as Abbreviation, Capitalized, or Foreign words as well as performing other maintenance tasks. Downloads for both can be found on  the WordStuff3 package description page.    

October 21, 2016:  Although I never learned the root cause of the authentication problem with the website, it seems only to have affected files uploaded during a period of two of three days around the 15th.   Most files I could repair by deleting and re-uploading  pictures or page data.  A couple required intervention by EasyCGI support.  If you have trouble accessing pages or files on this website, please let me know.     

October 15, 2016:  EasyCGI, the host site for DFF, has modified something in their  structure which is causing problems with accessing this website.  It is erroneously asking for authentication (Username and Password) when browsing to a page.  The problem seems worse with Internet Explorer and frequently goes away if you just click the "Cancel" button in the popup window several times.   There may be a similar problem when attempting to download program executables or source code zip files.   Google Chrome seems to work more often than Internet Explorer or Edge.  All browsers seem to be missing embedded pictures on pages, at least in Windows 10.  I'm going over now to check the situation on other computers to check Windows 7 and 8.1.  I'll post again here as things develop or problem gets resolved .  

October 6, 2016:  The fall quarter newsletter was sent to subscribers a couple of days ago.  It's available here in case you missed it. 

Here's significant news that did not make the newsletter:  The free "starter" version of Delphi has been extended by Embarcadero!. Thanks to viewer Mac for the heads up with the info.  This is the first free release that I recall since Turbo Pascal became "abandonware" in 2002 and, according to Wikipedia, an Explorer version in 2005.  I wasn't excited about these because they did not include the compiler source code which was (and is) a valuable learning resource.   The new free release is at Delphi 10.1 Berlin Starter Edition and still has the "no commercial use" restriction but does include the source code!  Mac also says that it is only available in the 32 bit version which is fine for most users, including me.  They do say "Offer may be withdrawn at any time", so don't delay if you want to check it out.


The What's New Archives



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