arbeite einfach mit downto dann hast du das problem nicht mehr. Der fehler kommt zu stande weil du am Anfang der Schleife festlegst bis zu welchem Itemindex gesucht werden soll, aber in der Schleife verringert sich die Anzahl der Liste...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,r:integer;
begin
for i:=ListBox2.Items.Count-1 downto 0 do
for r:=ListBox1.Items.Count-1 downto 0 do
if ListBox2.Items.Strings[i]=ListBox1.Items.Strings[r] then
ListBox1.Items.Delete(r);
end;
[Edit]Mir ist grad noch so eingefallen das es "indexOf" bei TStrings gibt[/Edit]