![]() |
TStringlist Duplikate verhindern
Hi,
Ich möchte alle Duplikate aus einer Stringlist löschen, habe etwas von DupIgnor gelesen aber irgendwie versteh ich das noch nicht, kann mir jemand das mal erklären? Anmerkung: Duplicates wirkt sich nur aus, wenn das Array sortiert ist. Nur Sortiert möchte ich es nicht wirklich haben, da die Einträge an ihrer Position schon richtig stehen und dadurch durch einander gewirbelt werden ;/ |
Re: TStringlist Duplikate verhindern
Hi,
du kannst mit der Eigenschaft Duplicates in einer sortierten (Eigenschaft Sorted auf True) StringList bestimmen wie Duplikate behandelt werden sollen. Du kannst sie akzepieren (dupAccept), einen Fehler veruhrsachen (dupError) oder sie Ignorieren (dupIgnore). Hoffe das hilft weiter. Gruß Flo [Edit] Lese grade das Du die Liste unsortiert willst. Dann hilft Dir dass ja nicht. Ich denke dann musst Du das selber beim einfügen prüfen. Das könntest Du mit IndexOf() machen, wenn -1 zurückgegeben wird ist der String noch nicht in der Liste. [/Edit] |
Re: TStringlist Duplikate verhindern
danke IndexOf() hat geklappt ;)
|
Re: TStringlist Duplikate verhindern
Oder du hast eine Kopie deiner Liste, welche Sortiert ist und überprüfst, ob das EInfügen eines Eintrages funktioniert.
Denk aber die IndexOf-Variante wird performanter sein. Hab das aber nicht getestet. |
Re: TStringlist Duplikate verhindern
nachträgliches Löschen mache ich so:
Delphi-Quellcode:
Stahli
for I := 0 to SL.Count - 2 do
begin for J := SL.Count - 1 downto I + 1 do begin if SL[J] = SL[I] then SL.Delete(J); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz