Forum: Object-Pascal / Delphi-Language
Delphi
by SirThornberry,
24. Dez 2005
mit folgendem Source kannst du eine bestimmte Zeile aus einem Stream lesen (ab Stream Position)
function GetLine(AStream: TStream; ALineNumber: Integer): String;
var LBuffer2, LBuffer: String;
LCurrLine, LBytes, LBreakPos: Integer;
begin
result := '';
SetLength(LBuffer2, 50);
LCurrLine := 0;
while (LCurrLine <= ALineNumber) and (AStream.Position < AStream.Size) do
Forum: Object-Pascal / Delphi-Language
Delphi
by SirThornberry,
24. Dez 2005
bei großen Dateien bin ich der Meinung das dein Vorschlag gut ist. Denn wie du bereits geschrieben hast wird bei Stringlisten die gesammte Datei in den speicher geladen was nicht gerade performant ist. Und da wir schon einige Jahre objectorientiert programmieren bin ich auch dafür das TFilestream anstelle von AssignFile genutzt wird (selbst wenn es intern vielleicht auch noch genutzt wird)
Forum: Object-Pascal / Delphi-Language
Delphi
by SirThornberry,
24. Dez 2005
ein ReadLn macht letzendlich auch nix anderes als die Datei blockweise/zeischenweise zu lesen und dann zu prüfen ob ein Zeilenumbruch vor kommt. Genau so kannst du es auch mit TFileStream machen. Immer blockweise lesen und prüfen ob in dem gelesenen Block ein Zeilenumbruch vor kommt. Wenn nicht den nächsten Block lesen und den gelesenen an die anderen bereits gelesenen Daten anhängen, wenn der...