Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Problem mit großer Textdatei
9. Jan 2012, 17:09
Beim nächsten Mal bitte die Delphi-Tags nutzen
Delphi-Quellcode:
var
Dateipfad : String;
FrameNumber, i, j : Integer;
Datensatz : TStringList;
Positionen : Array of Integer;
Abstaende : Array of Integer;
{ TForm1 }
procedure TForm1.Button1Click( Sender : TObject );
begin
FrameNumber := StrToInt( Edit2.text );
Dateipfad := Edit1.text;
Datensatz := TStringList.Create;
Datensatz.LoadFromFile( Dateipfad );
SetLength( Positionen, FrameNumber + 1 );
For i := 1 To Datensatz.Count - 1 Do
Begin
If Pos( 'Frame', Datensatz.Strings[i] ) > 0
Then
Begin
Positionen[i] := i; // hier könnte ein Überlauf passieren, wenn i > FrameNumber
ListBox1.Items.Add( IntToStr( Positionen[i] ) );
End;
end;
Datensatz.Free;
end;
end.
- Du prüfst niemals nach, ob das Array Positionen noch Platz hat
- Das Array hat beim Befüllen "Löcher", da ja wohl nicht in jeder Zeile das Wort "Frame" zu finden ist
- Das Befüllen der ListBox dauert hier auch seine Zeit, da bei jedem Einfügen die ListBox wieder neu gezeichnet wird
Abhilfe schafft
Delphi-Quellcode:
ListBox.Items.BeginUpdate;
try
// ListBox mit allem Möglichen füllen
finally
ListBox.Items.EndUpdate;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo ( 9. Jan 2012 um 17:12 Uhr)
|