Thema: Delphi Problem bei for Schleife

Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#11

Re: Problem bei for Schleife

  Alt 27. Jan 2008, 18:48
Das Problem ist einfach, dass sich der Index der Memo.Lines ändert, sobald du eine Zeile daraus löschst.

Entweder du machst es mit downto ...
Delphi-Quellcode:
procedure TForm1.ReplaceClick(Sender: TObject);
var
  i: integer;
begin
  for i := Memo1.Lines.Count - 1 downto 0 do
    begin
      try
        [Befehl]
      except
        Memo1.Lines.Delete(i);
      end;
    end;
  ReplaceClick(Self);
end;
... oder einer repeat-until-Schleife
Delphi-Quellcode:
procedure TForm1.ReplaceClick(Sender: TObject);
var
  i: integer;
begin
  i := 0;
  repeat
    try
      [Befehl]
    except
      Memo1.Lines.Delete(i);
      i := 0;
      continue; // kA, ob das in nem except-Block geht
    end;
    inc (i);
  until i > Memo1.Lines.Count - 1;
  ReplaceClick(Self);
end;
Du solltest dir auch überlegen, ob es das richtige ist, eine Exception zu werfen, wenn dein Ereignis eintritt. Warum nicht eine if-Abfrage?
Delphi-Quellcode:
if WordFound (Memo1.Lines[i]) then
  Memo1.Lines.Delete(i);
... oder so?
  Mit Zitat antworten Zitat