Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Doppelte Einträge in Listbox verhindern (https://www.delphipraxis.net/1452-doppelte-eintraege-listbox-verhindern.html)

Chewie 28. Nov 2002 16:13


Doppelte Einträge in Listbox verhindern
 
Ich hab mal eine ganz doofe Frage. Ich glaube, letztens hab ich mal gesehen, wie man erreichen kann, dass in einer TStrings-Liste wie z. B. in einer Listbox jeder String nur einmal vorkommt. Das war soweit ich weiß eine einfache Eigenschaft. Aber ich find síe jetzt nicht mehr. Entweder sollte ich mal meine Augen untersuchen lassen oder ich hab halluziniert. Falls ersteres zutrifft, dann könnt ihr mir sicher noch mal auf die Sprüge helfen. Bei zweiterem würden vielleicht Adressen von Psychiatern helfen.

Christian Seehase 28. Nov 2002 16:36

Moin Chewie,

Du meinst wahrscheinlich die Eigenschaft Duplicates.
Die Items einer ListBox verfügen allerdings nicht über diese Eigenschaft.
Du könntest Dir aber mit IndexOf behelfen. Diese Methode kennen auch die ListBox.Items.

Daniel B 28. Nov 2002 16:51

Hi,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to ListBox1.Items.Count -1 do
  begin
    if ListBox1.Items.Strings[i] = Edit1.Text then
    begin
      ShowMessage('Das Wort ' + ListBox1.Items.Strings[i] + ' wurde gefunden!');
    end;
  end;
end;
HTH

Grüsse, Daniel :hi:

Chewie 28. Nov 2002 16:52

Puh, gott sei Dank keine Halluzination. Ich werds dann wohl mit IndexOf machen, danke. Bbei welcher Klasse hab ich eigentlich dann Eigenschaft gesehen? Ich benutz nämlich nnur recht wenige VCL-Klassen und dachte, es wär die Listbox.

Chewie 28. Nov 2002 16:53

Zitat:

Zitat von Daniel B
Hi,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to ListBox1.Items.Count -1 do
  begin
    if ListBox1.Items.Strings[i] = Edit1.Text then
    begin
      ShowMessage('Das Wort ' + ListBox1.Items.Strings[i] + ' wurde gefunden!');
    end;
  end;
end;
HTH

Grüsse, Daniel :hi:

Klar, der gute alte eindimensionale Such-Algorithmus. Der ist mir nur zuviel Arbeit, und ich hab schließlich gedacht, dafür gäbs ne Eigenschaft. Aber mit IndexOf gehts einfacher als mit der Schleife.

Christian Seehase 28. Nov 2002 16:59

Moin Chewie,

Duplicates ist eine Eigenschaft von TStringList.

Chewie 28. Nov 2002 17:01

Zitat:

Zitat von Christian Seehase
Duplicates ist eine Eigenschaft von TStringList.

Danke :mrgreen:

CalganX 28. Nov 2002 17:15

Andere Möglichkeit:

Delphi-Quellcode:
function delDoubleEntries(aList:TStrings):integer;
var
 a, b: integer;
begin
  result := 0;
  if not Assigned(aList) then exit;
  while a < aList.count - 1 do
  begin
    b := a + 1;
    while b < aList.count-1 do
    begin
      if aList.Strings[a] = aList.Strings[b] then
      aList.Delete(b)
    else
      inc(b);
    end;
      inc(a);
    end;
      result := aList.count;
end;
Chris

iaby 2. Dez 2002 15:37

so müsste es auch funzen:
Code:
if listbox1.IndexOf('wort')> -1 then showmessage('wort gefunden');
ist vielleicht die einfachste möglichkeit;-)
habs jetzt aus dem kopf gemacht, deshalb ohne garantie!

DeddyH 24. Aug 2008 18:37

Re: Doppelte Einträge in Listbox verhindern
 
[OT] Wer schreibt denn Werbung in uralte Threads? :gruebel: [/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 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