Stringlist, Array: Fehler bei Stringkürzung

Hallo liebe Wissenden,
ich habe ein Problem bei der Kürzung von Strings mit einer von mir geschriebenen Funktion.
Ich habe ein .txt-File mit 3006 Zeilen. Dieses hab ich in eine Stringlist geladen. Der Anfang des Files sieht so aus:

MIN=0 -10 0 
MAX=60 10 25 
SCALE=10 5 10 
DEC=2 2 2 
DEF="Zeit" t / s "Spannung" U\_A1 / V "Frequenz" f / Hz 
0 0,105 NAN 
0,02 0,11 NAN 
0,04 0,105 NAN 
0,06 0,105 NAN 
0,08 0,105 NAN 
0,1 0,105 NAN 
0,12 0,105 NAN 
0,14 0,105 NAN 
0,16 0,105 NAN 
0,18 0,105 NAN 
0,2 0,105 NAN 

Das was ich eigentlich nur brauche ist die zweite Spalte, also habe ich die ersten 5 Zeilen direkt aus der Stringlist gelöscht und die Stringlist an ein Array übergeben, damit ich an die einzelnen Zeichen komme(habe zumindest nichts darüber gefunden, ob man bei Stringlists auch auf Zeichen zugreifen kann).
Ich habe also jetzt die Stringlist DataFile mit den Strings 0 bis 3000
und ein dynamisches Array DatenZeilen, das auch von 0 bis 3000 geht. Soweit kein Problem.
Jetzt will ich die zweite Spalte quasi aus den Strings separieren. Dazu habe ich folgende Funktion geschrieben:

function StringVerkleinern(Zeichenkette: String): String;
var i, j: Integer;
begin
 j := 1;
 Zeichenkette := StringReplace(Zeichenkette,#9,#32,[rfReplaceAll]);
 //Die Leerzeichen zwischen den Spalten sind gar keine Leerzeichen
 //sondern Tab-Stops.
 for i := 1 to Length(Zeichenkette) do
 if Zeichenkette[i] #32 then
 inc(j)
 else
 begin
 Delete(Zeichenkette,1,j);
 Break
 end;
 //bis zur zweiten Spalte löschen
 j := 1;
 for i := 1 to Length(Zeichenkette) do
 if Zeichenkette[i] #32 then
 inc(j)
 else
 begin
 Delete(Zeichenkette,i,j);
 Break
 end;
 //ab der zweiten Spalte löschen
 Result := Zeichenkette
end;

Ist wahrscheinlich nicht die eleganteste Lösung, aber funktioniert…bis auf die letzte Zeile.
Der String[3000] sieht folgendermaßen aus:

60 0,105 NAN 

String[2999] sieht zum Beispiel so aus:

59,98 0,105 NAN 

Eigentlich sollte es genauso wie beim Rest funktionieren, aber Delphi sagt mir beim Ausführen der Schleife

for i := 0 to DataFile.Count - 1 do
 DatenZeilen[i] := StringVerkleinern(DatenZeilen[i]);

‚Zugriffsverletzung bei Adresse 00404324 in Modul ‚funk_uhr.exe‘. Lesen von Adresse 0000000E.‘
Was das zu bedeuten hat weiß ich nicht, wenn ich aber die Schleife nur bis DataFile.Count - 2 laufen lasse, dann meckert Delphi nicht.
Sage ich dann anschließend

DatenZeilen[3000] := StringVerkleinern(DatenZeilen[3000]);

kommt die gleiche Fehlermeldung. Im Debugmodus in einzelnen Anweisungen ausgeführt, kommt Delphi nur bis zum ‚begin‘ der Funktion. Nocheinmal F7 gedrückt und ich erhalte die Fehlermeldung.
Bei der Datei die ich hier habe ist es kein Problem, wenn ich den letzten String nicht habe, aber bei einer anderen Datei könnte es evtl problematisch werden (das sind alles Messwerte).
Vielen Danke schonmal für eure Antworten.
MfG,
Sven

Hat sich erledigt
Habs raus.
Ich hab einfach die Stringlist anstatt einem Array wieder benutzt um die verkürzten Strings zu speichern. Muss wohl irgendwie die Grenzen des Arrays falsch gesetzt haben oder so.
MfG
Sven