Ich würde sagen du packst das ganze falsch an. Ich habe auch mal so ein einfaches Memory-Spiel gemacht. Anzahl der Codezeilen: 286 Zeilen reine Programmlogik. Du bist jetzt schon bei über 500.
Desweiteren hast du da ziemlichen Spaghetticode, nutze die Möglichkeiten der
OOP um das ganze etwas zu strukturieren. Es bietet sich hier an eine Klasse für das Spielfeld und eine Klasse für eine Karte zu entwerfen. UndWobei die Klasse für das Spielfeld als Container für die Karten dient und die Formularklasse als Schiedsrichter fungiert.
Ich habe das ganze mal angehangen. Das ganze ist Bestandteil meines Container-Klassen Tutorials:
http://delphitutorials.michael-puff.de