TStringStream + TFileStream
Text-Dateien haben auch ohne SetTextBuf schon einen komischen 128 Byte-Puffer.
Das paßt nichtmal im Geringsten zur ClusterSize der Partitionen oder zur SectorSize der Datenträger.
Beim Lesen ist ein Puffer OK, aber wozu beim Schreiben?
Die Daten gehen sowieso nochmal durch die WFC (Windows File Cache ... das Teil, welches den
RAM voll macht) und dann nochmal durch verschiedenste Caches.
Wenn das Programm abstürtzt, sind diese Daten weg, was geade bei LogDateien etwas blöd ist, vorallem wenn man das Warum wissen will.
Delphi-Quellcode:
var
F: TextFile;
B: Byte;
// für LogDateien so klein wie möglich (0 ist leider nicht möglich) und ansonsten wäre es ein bissl größer nicht schlecht.
begin
AssignFile(F, '
Text.dat', CP_UTF8);
// Ja, wir können jetzt sogar unicode, auch wenn die BOM nicht automatisch rein kommt.
System.SetTextBuf(F, B);
Rewrite(F);
WriteLn(F, '
123456');
CloseFile(F);