Zitat:
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;
Was du da machst, kann schnell zu Fehlern führen.
Du veränderst innerhalb der Schleife dein Memo, dadurch ändert sich die Anzahl/Position der Zeilen.
Wenn du eine Zeile löschst, überspringst du die nächste Zeile, da alle Zeilen um eine Zeile aufrücken, du aber durch die Erhöhung von "_i" eine Zeile weiterspringst.