Achtung: Wenn du die Größe eines dynamischen Arrays per SetLength auf einen Wert x setzt, dann ist der höchste Index high(array) = x-1 !
Das bedeutet, dass die Zugriffsverletzung wahrscheinlich "am Ende der Schleife" auftritt, weil du zu weit iterierst. Probier folgendes:
Delphi-Quellcode:
for i := 0 to AnzahlSpalten -1 do
for n := 0 to AnzahlZeilen -1 do
Also bei
0 anfangen und bis
Anzahl-1 durchgehen. Auch darauf achten, dass deine anderen Arrays groß genug sind. Vor allem sollten sie dann auch bei 0 anfangen