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 Prüfen, ob ein String in der ListBox schon vorhanden ist? (https://www.delphipraxis.net/142397-pruefen-ob-ein-string-der-listbox-schon-vorhanden-ist.html)

AlexII 27. Okt 2009 14:24


Prüfen, ob ein String in der ListBox schon vorhanden ist?
 
Bin gerade dabei ein Code zu schreiben, welcher prüfen, ob ein String in der ListBox schon vorhanden ist?
Hab schon folgendes geschrieben kommen aber nicht weiter?

Delphi-Quellcode:
procedure TForm1.InserttoRSL1Click(Sender: TObject);
var i: Integer;
begin
for i:=0 to ListBox1.Count-1 do
begin
if Label3.Caption<>ListBox1.Items.Strings[i] then ListBox1.Items.Add(Label3.Caption);
end;
end;
Wenn die erste Zeile in der ListBox diesen String nicht enthält muss man weiter prüfen und wenn erst alle Zeilen geprüft sind einfügen, bei mir wird aber mehr mals eingefügt. :gruebel:

Wer da Ideen?

Klaus01 27. Okt 2009 14:28

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
.. gibt es bei det TListbox nicht
Delphi-Quellcode:
Listbox1.items.indexof(suchString)
Grüße
Klaus

DeddyH 27. Okt 2009 14:29

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
Wie wäre es mit Delphi-Referenz durchsuchenIndexOf?

alleinherrscher 27. Okt 2009 14:30

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
Zitat:

Zitat von AlexII
Wenn die erste Zeile in der ListBox diesen String nicht enthält muss man weiter prüfen und wenn erst alle Zeilen geprüft sind einfügen, bei mir wird aber mehr mals eingefügt. :gruebel:

Wer da Ideen?

Wie wärs hiermit:
Delphi-Quellcode:
if Listbox1.items.indexof(Label3.caption)=-1 then Listbox1.items.add(Label3.caption);
//edit: Mist, zu langsam :D

OldGrumpy 27. Okt 2009 14:31

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
ganz simpel:

Delphi-Quellcode:
if MeineListBox.Items.IndexOf(NeuerString)<0 then
Begin
  MeineListBox.Items.Add(NeuerString);
End;
Edit: Da bin ich ja nicht der einzige :mrgreen:

Deine Version machte folgendes:

- Laufe über alle Elemente in der Listbox
- Prüfe bei jedem Element, ob es dem Eingabetext entspricht.
- Falls nicht: Füge den neuen Text in die Liste ein

Du siehst hier klar den Denkfehler: Du darfst nicht schon einfügen, wenn nur der erste Vergleich ergeben hat, dass das vorhandene Element an der Stelle ungleich dem Eingabetext ist, sondern erst wenn alle derartigen Vergleiche ohne Ausnahme negativ waren. Das kann man sich also entweder über ein Flag merken (das sieht aber immer etwas unbeholfen aus), oder man fragt einfach die Listbox, ob sie den Eingabetext schonmal gesehen hat (mittels IndexOf) :)

AlexII 27. Okt 2009 14:37

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
Wow so einfach ist.... :shock: Thx... :thumb:

DeddyH 27. Okt 2009 14:44

Re: Prüfen, ob ein String in der ListBox schon vorhanden ist
 
[OT] Immer die gleiche Antwort, aber dafür schön im Minutentakt :lol: [/OT]


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