Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Problem mit großer Textdatei

  Alt 9. Jan 2012, 16: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.
  1. Du prüfst niemals nach, ob das Array Positionen noch Platz hat
  2. Das Array hat beim Befüllen "Löcher", da ja wohl nicht in jeder Zeile das Wort "Frame" zu finden ist
  3. 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 16:12 Uhr)
  Mit Zitat antworten Zitat