Ist ja auch richtig so. Wenn du was löschst, dann wird ja die Liste kürzer und irgendwann kommst du halt übers Ende hinaus.
Delphi-Quellcode:
Procedure TForm1.double_delClick(Sender: TObject);
Var i, k: Integer;
Begin
For i := ListBox1.Count - 1 downto 1 do
For k := i - 1 down 0 do
If ListBox1.Items.Strings[i] = ListBox1.Items.Strings[k] Then
ListBox1.Items.Delete(k);
End;
In solchen Fällen kommst du besser, wenn du rückwärts Wählen lässt, oder eine Andere Art von Schleife verwendest.
Delphi-Quellcode:
Procedure TForm1.double_delClick(Sender: TObject);
Var i, k: Integer;
Begin
i := 0;
While i < ListBox1.Count do Begin
k := 0;
While k < ListBox1.Count do
If ListBox1.Items.Strings[i] = ListBox1.Items.Strings[k] Then
ListBox1.Items.Delete(k) Else Inc(k);
Inc(i);
End;
End;