Salve, Leute !
Heute mal ein banales Problem. Ich möchte eine ganz simple ASCII-Datei mit einem TFileStream einlesen (AssignFile/CloseFile soll ja demnächst sterben). Die Datei sieht in etwa so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| 32°50.6873,012°14.4250,-38,72,70{CR}{LF} 32°50.6856,012°14.4189,-42,68,70{CR}{LF} 32°50.6861,012°14.4131,-42,68,70{CR}{LF} 32°50.6876,012°14.4077,-42,68,70{CR}{LF} 32°50.6895,012°14.4022,-41,69,70{CR}{LF} 32°50.6940,012°14.3896,-39,71,70{CR}{LF} 32°50.6970,012°14.3825,-39,71,70{CR}{LF} |
Das in geschweiften Klammern soll das ASCII-Zeichen $0D bzw. $0A darstellen.
Nun: Diese Datei will ich zeilenweise einlesen und entsprechend verarbeiten. TFileStream hat aber nur ein ReadBuffer... Muß ich jetzt allen ernstes die Datei Byteweise auslesen und bei einer CR/LF-Kombination hab ich die Zeile komplett ? Das kanns doch nicht sein, dauert doch Ewigkeiten...
Einlesen in ein Memofeld oder eine TStringList kommt nicht in Frage, da die Datei problemlos 100MB (und somit viele hunderttausend Zeilen) erreichen kann. Sowas kann man einer StringList aber nicht anbieten, ohne
sehr viel Zeit zu haben...
TReader ist auch keine Maßnahme, da diese Klasse nur tagged Strings auslesen kann.
Gibts da irgendwas in der Klassenbibliothek, das ich übersehen habe ?
Olaf
[Edit] Post gehört wohl eher nach "Dateizugriff", oder ? Kann ein Mod vllt. verschieben... Danke[/Edit]
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.