Nun ist mir wieder eingefallen in welchen Zusammenhang ich ReadLn() verwendete so das es auch noch relativ flott war.
hier ein mini beispiel:
Delphi-Quellcode:
begin
test := TStreamReader.Create('
C:\Test\Temp\Delphi\DP\Testing\Textfile.txt');
// hier kann auch ein dein puffer rein (TStream/Memory/File) damit es schneller abläuft
// wenn im puffer-modus, musst du noch eine methode einbauen die die letzten zeichen vor dem ende sich "merkt" und beim nächsten puffer-laden vorneweg einbindet
// LESE UNBEDINGT VORHER DIE DELPHI HILFE UM ZWISCHEN ASCII UND UTF-8 DATEIEN ZU UNTERSCHEIDEN, im normalfall wird ascii (0-127) verwendet (ich glaube so etwas gelesen zu haben)
try
while not(test.EndOfStream)
do // in diesem beispiel verarbeite den TStreamReader.Create komplett bis zum ende der datei
begin
Memo1.Lines.Add(test.ReadLine);
// das hier ist nur platzhalter damit man weiß wie man ReadLine benutzt
// wenn du RichEdit anstelle von Memo nimmst, wird es ein wenig schneller
// Memo konvertiert manchmal alles nochmal um und verbraucht damit 2-4x soviel speicher bei gleicher datenmenge
// hier könntest du zum beispiel 100 zeilen in eine tstringlist o.ä. sammeln/puffern
// die strings eventuell noch bearbeiten
// und dann alle 100 auf einen rutsch in die anzeige mit beginupdate/endupdate zu casten
end;
finally
test.Free;
end;
end;
// dieses beispiel geht von richtigen input/output angaben aus und besitzt deswegen keinerlei weiterer checks
// try -> finally reichte mir zum testen aus
Zu Deinen Fragen:
1. Mit Puffern meine ich das was Du bereits machst, dir einen Teil vom ganzen Puffern (TStream).
2.1 Ich meinte Leerzeilen, nicht Leerzeichen
2.2 Die Zeile hier drüber ist eine Leerzeile und überall wo nichts steht ist ein Leerzeichen, das macht einen großen Unterschied