Moin!
Ich habe mir da ein kleines Tool gebastelt. Damit kann ich Logfiles laden.
Da in diesen LogFiles immer sehr viele unnütze Zeilen sind, habe ich einen kleinen Filter geschrieben, der nach einer bestimmten Zeichenkette sucht und wenn diese vorhanden ist, die Zeile löscht. Das schaut dann so:
Delphi-Quellcode:
procedure TFormLogFilter.Button1Click(Sender: TObject);
Var _i: Integer;
_aktuelleZeile: String;
begin
for _i := Form1.Memo.Lines.Count downto 0 do begin
if pos(Edit1.Text, Form1.Memo.Lines.Strings[_i]) > 0 then
Form1.Memo.Lines.Delete(_i);
if _i mod 100 = 0 then Application.ProcessMessages;
end;
end;
Funktioniert ja, aber wenn das Memo sich ständig neu aktualisieren muss, dauert so ein Filter bei ~80000 Zeilen schonmal 3-7 Minuten ...
Deshalb mal 2 Fragen:
1) Gibt es evtl. eine bessere Methode um sowas zu realisieren?
2) Kann ich während der Suche die Änderungen im Memo unterdrücken? Also so das da erstmal nix passiert? Erst zum Schluss dann wieder freigeben und man sieht den "neuen" gefilterten Text.