Vorschlag: Du lagerst die Blöcke nicht in Arrays of Char, sondern, komplett gesehen, in einem Array of String, was ja fast das gleiche ist ...
Aber, du analysierst beim einlesen gleich, ob das Zeichen ein ' ' ist, wenn ja, schreibst dus einfach nicht in den String ...
Pseudocode:
Delphi-Quellcode:
var strings : array of string;
i := 0;
setlength(strings,1,1);
repeat
blockread(datei, buf, 1);
if buf <> ' ' then
begin
setlength(strings,length(strings+1);
setlength(strings[i],length(strings[i]+1);
strings[i,c] := buf;
inc(c);
end else
begin
inc(i);
c := 1;
end;
until eof(datei);
Dann hast du ein dynamisches Array mit allen String-Ketten, die du dann einfach per StrToInt umwandeln kannst.
mfG
Markus
EDIT: Danke roter Kasten, ich habs gesehen ... eine Anmerkung, mein Code verhindert das auftreten von Leerzeichen in den Strings von Anfang an, das erspart eine Performanceaufwändige, doppelte Berarbeitung der Strings.
Was evtl. Leistung frisst, ist das ständige setlength();, da evtl. jedes Mal Speicher alloziiert wird (schreibt man das so?). Man könnte im Voraus eine Länge von z.B.5 für einen Teilstring und 1000 für das Dynamsiche Array verlangen und bei überschreitung dieser Grenze dann einen weiteren Packen drauflegen.
Am Ende wird geprüft, welche Strings nicht enthalten und diese werden dann rausgeschnitten.
EDIT2: Noch was ... auch wenns auf den ersten Blick schwieriger scheint ... du färst mit TFileStreams und TMemoryStreams besser als mit Files ... such mal danach!