AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi StringList - doppelte Einträge vermeiden
Thema durchsuchen
Ansicht
Themen-Optionen

StringList - doppelte Einträge vermeiden

Ein Thema von Gambit · begonnen am 24. Mär 2005 · letzter Beitrag vom 24. Mär 2005
Antwort Antwort
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#1

StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:24
Hallo,

folgender Code:

Delphi-Quellcode:
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;
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?

Gruß

Gambit
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#2

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:27
laut Delphi-Hilfe muß die property Sorted auf true gesetzt sein, damit Duplicates überhaupt greift.

Roderich
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#3

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:29
Danke!
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#4

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:30
Hi,

ich kenn die Eigenschaft nicht, die du hier verwenden willst. Ich würd das "per Hand" machen:
Delphi-Quellcode:
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;
Vielleicht hilft dir das ja weiter

cu
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#5

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:32
Hi,

ansonsten kannst Du vor dem Delphi-Referenz durchsuchenAdd auch mit Delphi-Referenz durchsuchenIndexOf prüfen, ob der Eintrag bereits vorhanden ist (ähnlich wie dieses "CheckIfDouble" nur einfacher ).

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#6

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:34
Hi,

IndexOf erlaubt aber keine Unterscheidung zwischen Groß-/Klein-Schreibung, oder?

cu
  Mit Zitat antworten Zitat
Gambit

Registriert seit: 28. Mai 2003
680 Beiträge
 
Delphi 7 Professional
 
#7

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:40
Ja, ich hatte zunächst auch überlegt es per hand zu machen aber

aList.Duplicates:= dupIgnore; 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...
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#8

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:42
Hi,

² secure: stimmt.
² gambit: hätte ja sein könne, dass die Liste nicht sortiert werden soll

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#9

Re: StringList - doppelte Einträge vermeiden

  Alt 24. Mär 2005, 11:54
Du köntest ja auch die Add Methode überschreiben und vorher überprüfen ob der eintrag vorhanden ist!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz