![]() |
StringList - doppelte Einträge vermeiden
Hallo,
folgender Code:
Delphi-Quellcode:
durch das setzen der Property aList.Duplicates:= dupIgnore soll eigentlich das Einfügen von bereits vorhandenen Strings vermieden werden. Funzt aber nicht. Was ist falsch?
procedure TForm1.Button1Click(Sender: TObject);
begin if OpenPictureDialog1.Execute then aList.Add(OpenPictureDialog1.FileName); end; procedure TForm1.Button2Click(Sender: TObject); var i: Integer; s : String; begin for i:= 0 to aList.Count-1 do s:= s+aList.Strings[i]+#10#13; showMessage(s); end; procedure TForm1.FormCreate(Sender: TObject); begin aList:= TStringList.Create; aList.Duplicates:= dupIgnore; end; Gruß Gambit |
Re: StringList - doppelte Einträge vermeiden
laut Delphi-Hilfe muß die property Sorted auf true gesetzt sein, damit Duplicates überhaupt greift.
Roderich |
Re: StringList - doppelte Einträge vermeiden
Danke!
|
Re: StringList - doppelte Einträge vermeiden
Hi,
ich kenn die Eigenschaft nicht, die du hier verwenden willst. Ich würd das "per Hand" machen:
Delphi-Quellcode:
Vielleicht hilft dir das ja weiter ;)
function CheckIfDouble(const entry: string; var list:TStringList; case_sensitive: boolean):boolean;
var c:integer; begin for c:=0 to (list.count-1) do if ((list.strings[c] = entry) and case_sensitive) or ((lowercase(list.strings[c]) = lowercase(entry)) and (not case_sensitive)) then begin result:=true; break; end; result:=false; end; // Stelle, an der hinzugeüfgt wird procedure AddItem(item: string); begin if (not CheckIfDouble(item, aList, false)) then aList.Add(item); end; cu |
Re: StringList - doppelte Einträge vermeiden
|
Re: StringList - doppelte Einträge vermeiden
Hi,
IndexOf erlaubt aber keine Unterscheidung zwischen Groß-/Klein-Schreibung, oder? cu |
Re: StringList - doppelte Einträge vermeiden
Ja, ich hatte zunächst auch überlegt es per hand zu machen aber
Delphi-Quellcode:
funzt sehr gut, warum sollte ich es dann nicht nehmen. Da die Listen sehr klein sind sollte es auch keine Geschwindigkeitsnachteile durchs vorherige Sortieren geben...
aList.Duplicates:= dupIgnore;
|
Re: StringList - doppelte Einträge vermeiden
Hi,
² secure: stimmt. :mrgreen: ² gambit: hätte ja sein könne, dass die Liste nicht sortiert werden soll :) Gruß Stephan :dance: |
Re: StringList - doppelte Einträge vermeiden
Du köntest ja auch die Add Methode überschreiben und vorher überprüfen ob der eintrag vorhanden ist!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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-2025 by Thomas Breitkreuz