Es wird 2x geprüft, ob noch Zeichen da sind, und zwar einmal beim Abfragen der Position und dann nochmal ob das Lesen eines Zeichens funktioniert hat. Das ist nicht schön.
Ich würde eine Funktion schreiben, die genau eine Seite liefert und True/False, ob noch weitere Seiten zu erwarten sind.
Delphi-Quellcode:
Function ReadOnePage (myFileStream : TStream; Var Page : String) : boolean;
Const
CharSize = SizeOf(Char);
Var
Ch : Char;
Begin
result := True;
Page := '';
While myFileStream.Read(Ch,CharSize) = CharSize do
if Ch=#12 then
exit
else
Page := Page + Ch;
result := false;
End;
// Der eigentliche Aufruf ist dann ziemlich selbsterklärend
While ReadOnePage (myFileStream, Page) Do
ProcessPage(Page)