Hallo,
p und o sind bei Dir doch immer gleich, Du vergleichst da anscheinend einen Eintrag immer mit sich selbst und da die Schleife aufhört, wenn count <> 5, wird bei 5 Einträgen nur der erste gelöscht, da danach ja nur noch 4 vorhanden sind, änderst Du
until (listbox0.Items.Count <> 5) or (o = 5);
auf
until (listbox0.Items.Count <> 3) or (o = 3);
werden entsprechend mehr Einträge gelöscht. Willst Du zwei hintereinanderliegende Einträge miteinander vergleichen, so sollte p um eins größer als o sein.
Versuchs mal damit:
Delphi-Quellcode:
if listbox0.Items.Count = 5 then
begin
o:=1;
repeat
if (listbox0.Items[o][5] + listbox0.Items[o][7] + listbox0.Items[o][9]) =
(listbox0.Items[o - 1][5] + listbox0.Items[o - 1][7] + listbox0.Items[o - 1][9]) then
listbox0.Items.Delete(o);
Inc(o);
until (listbox0.Items.Count <> 5) or (o = 5);
end;
p ist dann überflüssig.