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 CD.zip 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

Search DelphiForFun.org


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


August 6, 2008

Delphi For Fun Newsletter #50


They say that time seems to go by faster as you age because each month or year is a smaller part of your total life experience.  I'm not sure of the explanation, but it does feel like summer is flying by.   The two months  in Europe from mid-April to mid-June seem like an eye-blink now that we're home again.  


We have had a bumper crop for blueberries this summer.  I've picked enough gallons to convince me that the high prices in the markets are probably justified.   I'll be pruning the bushes heavily this winter to reduce the quantity but hopefully increase berry size for next year.  The blueberries are about gone, but the wild blackberries are staring to ripen.   Just as good to eat, but much more painful to pick!    We'll be sharing the berries with our local bear, the deer, and even the turkeys.   All in all, it is good to be home again doing home things, including getting back to programming.   Here are links to the  projects  mainly since our return home.


April 8, 2008:  One week before our big trip to Europe and most all the advanced planning is done.  We're  reading through the guidebooks that we do not plan to carry with us in order to absorb a little more background about the places we'll be visiting. 

I took time to update our Age Problem Solver program  today to include the current Mensa Calendar puzzle and  to handle a couple of wording variations of previous puzzles.   I also added two buttons to help test and debug the program.  One button reloads the parsing tables without restarting the program and the other to  "backtest"  all available problems and display a summary of results.

June 22, 2008:  We're back!  Home again after 60 days of European travel.   Stops included Germany, Netherlands, a cruise (with stops in Turkey, Italy, and Spain), Switzerland, France, Ireland, and Germany for a few days before flying home.  We got to spend part of the time with children and grandchildren but all in all, 60 days is too long to be away from the home we love here in Virginia.  We enjoyed the flowers and outdoor hikes,  but museums, old churches, and castles tend to become a blur after awhile.    Europe has a longer history than we have here in the States and Europeans have a greater sense of their history.   But we still feel fortunate to live in the USA and are glad to be back home where the roads are well signed, where a double bed is not two twin beds pushed together, where a Big Mac hamburger costs $3 not €3, and where that most evil invention, the duvet, is rarely seen.     

I had a few dozen DFF emails waiting for me when we got home.  I think I have answered  those needing responses, so if you wrote and did not receive a reply, please write again. 

One question relating to the Monitor off program led to a small change which I tested on my Dell XPS laptop.  Monitor Off uses the Pause key to turn the monitor off or on, but the XPS documentation did not specify what key combination is needed to generate the pause key code.  I posted Key Scan Codes program today as a result of the investigation.  It displays key values for pressed keys which generate a character, or key names for those which do not.  By the way, on Dell XPS laptops the Fn + Insert key combination generates Pause.   Also by the way, it looks like Monitor Off is now working even under Vista.

July 1, 2008:  A small change to our Cutting Stock program was posted this evening.  When multiple stock lengths were available, the summary results grid  could list the stock amount used and cost in a row that associated it with the incorrect length and cost per piece data.  The problem has been corrected.


5x5 Panmagic Square: Columns, rows, 2 full diagonals and 8 broken diagonals all sum to 65.

July 3, 2008:  Generating a magic square of a given size is not too difficult, especially if it has an odd number of cells per side.   Generating a lot of them is not so easy.  A viewer wrote a while ago asking about computing the amount of water that a magic square would hold if each cell became a column with its height equal to the value of the cell.  Might be an interesting problem to work on, but we need some samples for testing.   Today's first attempt, PanMagic Squares,  will generate 115,000 or so 5x5 squares with a special "panmagic" property.  There are reported to be a few million order 5 magic squares altogether.  Hmmm, someone must know how to create them all. 

Oh, by the way, the commonly reported total number of different 5x5 panmagic squares is 28,800, so  I may be all wet here.  I'm sure to hear more about this.

July 12, 2008:  A minor update to the DelphiForFun Library file, DFFLibV11.zip, was posted this evening.  with a few changes.  Some of these have been previously applied to version 10 without notice but it seemed time to catch up and document them.  DFFLIBV11 contains the following changes:

          In the DFFUtils unit a new routine,  IntToBinaryString, has been added to produce a display (printable) binary representation of an integer.

         UTGraphSearch unit cures a memory leak with a new "Clear"  method that frees nodes when it is called.

         The UBigIntsV3  big integers has a corrected Mult procedure to multiply a big integer by a 64 bit  (Int64) integer.  In the old version, negative smaller Int64 integers (less than 232-1) were treated as positive.

         In the Mathslib unit the NbrFactors function (number of factors for an integer) returned an incorrect value in some cases. Long time contributor Charles Doumar found and submitted the corrected version.

I'm working on a new story problem solver which reads the text and solves "digit relationship" problems like:

"Find a five-digit number in which the first digit is double the second, the third digit is two less than the second, the fourth digit is the sum of the second and third, and the last digit is one less than the first. The sum of all the digits is 19."

The program is running for half a dozen samples, but I still need to add a few more and do some documentation.  Stay tuned.    I watched our 4 year old grandson continuously revising and honing his language skills all this week.  If only I could get my language processing programs do the same, then we would have something special! 

July 16, 2008: As a programmer, I have a standing interest in  how our brains get programmed;  i.e. how we learn.  Any intellectual problem I can solve, I should be able to teach my "computer brain"  to solve.  This has usually been the case, but after 40+ years of programming, the difficulty in doing so still surprises me.  Today's program Digital Position Problem Solver is the latest example.   It takes text story problems with phrases describing the relationships between the digits of an integer (e.g. "the first digit is two less than the second") and figures out what integer is being described.   I was testing  the 11th problem before realizing that my "teaching" had overlooked something.  The problem sentence was:   The fourth digit is one-fourth of the fifth.  Oops; "fourth" can be a position and a denominator!   It is clear to us humans that the relationship being described is "Fourth = 1/4*Fifth".    Problem 11 is still unsolved by the program until I figure out how I know how to solve it and then how to "retrain" the program.     No wonder I love this stuff! 

July 27, 2008:  Today's program plays with converting Latitude/Longitude angle coordinates on a sphere to X/Y distance coordinates on a flat map, i.e. the computer screen.   I used the Mercator Projection mainly because there is a good article on Wikipedia describing the math involved and because there are Mercator Projection maps available online for testing.  Mercator Demo allows the user to load small maps,  click on two known points to tell the program about the scaling, and then click the map to see its Lat/Long coordinates or enter known location Lat/Long coordinates to see the point on the map.   

July 31, 2008: 



The standard set of 28 dominoes from blank/blank through 6/6  have been placed randomly on an 8x7 grid and their outlines erased.  The puzzler's task is to replace the outlines, i.e. to redraw the 28 dominoes. .   Check it out at   Domino Search.

August 3, 2008:  Intersecting Lines  is a program designed to test a LinesIntersect function designed to  return a "true" or "false" condition based on whether two given line cross each other.  Changes were posted today to correct a rare error condition where non-intersecting lines were reported as intersecting.   Library file DFFLibV11 which contains the UGeometry unit which contains the LinesIntersect function was also reposted.  Another example where my 4 year old grandson can beat my complex algebra based program in deciding whether two lines touch or cross each other!   How do we do it?  




Gary Darby



Age is an issue of mind over matter. If you don't mind, it doesn't matter. ~Mark Twain

Men do not quit playing because they grow old; they grow old because they quit playing. ~Oliver Wendell Holmes



To subscribe or unsubscribe from this newsletter, visit http://delphiforfun.org/newsletter.htm


244,500 home page visitors since Sept 2000.      401,000 program downloads in the past 12 months!