Das ist ja Spaghetti-Code !!!
Und alles ohne Resource-Schutzblock (try...finally...end).
Eine Zerlegung der Gesamtaufgabe in Unter- Funktionen/Proceduren wäre sehr sinnvoll.
Ausserdem: GetMem
innerhalb der Schleife for counter:= gesamt_anzahl DOWNTO alt_zahl DO
ist nicht sinnvoll. Einmal ausserhalb der Schleife hätte auch gereicht.