Einzelnen Beitrag anzeigen

petergensfeld

Registriert seit: 8. Dez 2005
Ort: Raeren (B)
6 Beiträge
 
Delphi XE Professional
 
#1

Datei zeilenweise Einlesen mit TFileStream

  Alt 16. Nov 2010, 15:38
Delphi-Version: 2010
Hallo zusammen,

ich würde gerne eine umfangreichere Datei mit Messdaten im Textformat zeilenweise einlesen. Aufgrund des Umfangs möchte ich es nicht so gerne mit TStringList.LoadFromFile machen, weil dann alles auf einmal im Hauptspeicher landet.

Das zeilenweise Einlesen mit den veralteten Routinen AssignFile/Reset/ReadLn/CloseFile geht schon, aber ich würde es lieber mit Streams machen. Dazu habe ich die TStream-Klasse um eine ReadLn-Funktion ergänzt. So hab ich's versucht:

Delphi-Quellcode:
type
  TStreamHelper = class helper for TStream
  public
    function ReadString: string;
  end;

function TStreamHelper.ReadLine: string;
var
  S: String;
  Ch: Char;
begin
  S := '';
  while Read(Ch, 1) = 1 do
  begin
    S := S + Ch;
    if RightStr(S, Length(sLineBreak)) = sLineBreak then
    begin
      S := LeftStr(S, Length(S) - Length(sLineBreak));
      Break;
    end;
  end;
  Result := S;
end;
Funktioniert auch, ist aber leider quälend langsam. Was kann ich tun, um die Laufzeit zu optimieren? Oder gibt es einen anderen Ansatz ohne die veralteten Routinen zu verwenden?

Dirk
Dirk
  Mit Zitat antworten Zitat