Hai yankee,
hier noch eine alternative Methode (zum testen habe ich eine ListBox genommen):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
ndx: integer;
begin
with ListBox1 do
begin
for ndx := Count - 2 downto 1 do
begin
if not ((Items[ndx] = Items[ndx + 1]) or (Items[ndx] = Items[ndx - 1])) then
begin
Items.Delete(ndx);
end;
end;
// Schleifen ende
if not (Items[0] = Items[1]) then // erster <> zweiter
begin
Items.Delete(0);
end;
if not (Items[Count-1] = Items[Count-2]) then // letzer <> vorletzer
begin
Items.Delete(Count-1);
end;
end;
end;
Ich durchlaufe von unten nach oben die Einträge von count -2 (vorletzter) bis 1 (zweiter) und prüfe ob der Eintrag davor
oder danach gleich dem aktuellen ist. Wenn dies
nicht zutrifft lösche ich den aktuellen.
Ganz zum schluss prüfe ich noch ob der erste = dem zweiten ist bzw. der letze = dem vorletzten.
Aber die Methode von Keldorn ist auch sehr elegant
Stephan B.
"Lasst den Gänsen ihre Füßchen"