Einzelnen Beitrag anzeigen

DieHardMan

Registriert seit: 16. Jul 2002
Ort: Stuttgart
68 Beiträge
 
#1

TListView Duplikate rückwärts löschen

  Alt 17. Jun 2006, 03:14
Könnte mir jemand helfen diese Prozedur zum laufen zu bekommen? Es soll von allen doppelten Einträgen immer nur das unterste Item übrigbleiben. Hab schon länger rumprobiert bekomm aber immer nen "out of bounds" Fehler, sollte wohl andersrum anfangen also bei lv.items.count - 1 und vielleicht wär ne for schleife auch besser aber irgendwie krieg ichs grad net hin.

Delphi-Quellcode:
procedure DeleteFirstDoubles(lv: TListView; SubItem: integer = -1);
var
  li1 : TListItem;
  li2 : TListItem;

  x : integer;
  y : integer;

begin
  if lv.Items.Count < 1 then Exit;

  x := 0;

  while x <= lv.Items.Count - 1 do
    begin
      li1 := lv.Items[x];

      y := x + 1;
      while y <= lv.Items.Count - 1 do
        begin
          li2 := lv.Items[y];

          if SubItem > -1 then
            begin
              if AnsiSameText(li1.SubItems[SubItem], li2.SubItems[SubItem]) then
                li1.Delete;
            end
          else
            begin
              if AnsiSameText(li1.Caption, li2.Caption) then
                li1.Delete;
            end;
          inc(y);
        end;

      inc(x);
    end;
end;
Alle meine Entchen...
  Mit Zitat antworten Zitat