[Delphi] Listboxabfragen
lima-city → Forum → Programmiersprachen → Delphi & Pascal
anzahl
benutzen
code
dienen
eintrag
index
item
laut beispiel
list
liste
parameter
problem
programm
programmstart
string
suchwort
text
url
zugabe
zwischenspeicher
-
Hallo,
ich habe derzeit ein eig kleines Problem mit Delphi.
Normalerweise stellen Listboxen kein Problem für mich dar, aber in meinem neuen Versuch sind sie mir ein Klotz am Bein.
Was ich machen möchte?
Ich möchte beim Programmstart eine Liste von Namen in eine Listbox laden....bis hierher kein Problem.
Die sieht dann bspw so aus:
Name1
Name2
Name3
Nun möchte ich per EditSuchwort einen Namen eingeben und überprüfen, ob der Name mit einem Eintrag in der Listbox übereinstimmt.
Mein bisheriger Versuch war:
Suchwort:string;
i:integer;
Suchwort:=EditSuchwort.Text;
For i:= 0 to *Anzahl der Einträge in der Listbox(laut Beispiel 3, da Name 1 bis 3)* do
begin
if Suchwort=Listbox.Items.Strings then
begin
ShowMessage('Der Name steht in der Liste')
usw....
Egal was ich oben für to *Anzahl der Einträge* eingebe kommt immer, das der Listenindex das Maximum (1) überschreitet.
Selbst wenn ich von 0 bis 50 eingebe geht es nicht, aber wenn ich
"Suchwort=Listbox.Items.Strings[0]" nehme, dann funktioniert es
Kann mir da einer helfen, oder hat jmd eine andere Idee, um das zu verwirklichen?
Vielen Dank -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
var i: Integer; found: Boolean; begin found := false; for i := 0 to Listbox1.Items.Count-1 do begin if ListBox1.Items[i] = EditSuchwort.Text then begin found := true; end; end; if found then ShowMessage('Eintrag ist vorhanden') else ShowMessage('Eintrag ist nicht vorhanden'); end;
/Edit:
Dein Fehler:
For i:= 0 to *Anzahl der Einträge in der Listbox(laut Beispiel 3, da Name 1 bis 3)* do
Man fängt in der Informatik aber bei 0 an zu zählen und nicht bei 1 ;)
Beitrag zuletzt geändert: 14.3.2011 18:46:17 von trueweb -
Das wahre Netz hat natürlich Recht. Derweil er geschrieben hat, hab' ich ein kleines Beispiel gebastelt (verwende BDS 2006), welches dir in der Listbox auch gleich den ersten Eintrag, der das Suchwort enthält, markiert. Lässt sich sicher so ausbauen, dass alle Einträge mit dem Suchwort markiert werden ...
hier der Download des gesamten Delphi-Projekts -
Danke für deine Hilfe trueweb....diese Count Funktion ist mir anscheinend in Vergessenheit geraten -.-
Und auch an burgi vielen Dank, aber leider kann ich dein Programm nicht für meins benutzen ^^
Meine Listbox ist nämlich unsichtbar und soll im Programm selbst nur als Zwischenspeicher dienen ^^
Man gibt nur in einem Edit einen Namen ein und mit nem Klick auf einen Suchen-Button kommt dann die Ausgabe, ob vorhanden oder nicht ;)
Dankööö ^^ -
metin2-fun schrieb:
Und auch an burgi vielen Dank, aber leider kann ich dein Programm nicht für meins benutzen ^^
Meine Listbox ist nämlich unsichtbar und soll im Programm selbst nur als Zwischenspeicher dienen ^^
Hättest du das gleich gesagt, dass die Listbox eigentlich auf eine Art verwendet wird, wie man es nicht tut, hätte ich dir die Verwendung einer TStringList (so wie es die Egenschaft Items des ListBox-Objekts ist) empfohlen, da das wesentlich speichersparender ist, also die sauberere Lösung darstellen würde. Das mit der Count-Eigenschaft funtkioniert natürlich dort genau gleich, da es der selbe Objekttyp ist.
Trotzdem: gelöst und geschlossen -
Diese Lösung ist IMO universeller nutzbar.
//Gibt zurück, ob SearchStr in List enthalten ist. Als Zugabe wird der ItemIndex mit zurückgegeben function StringInList(const SearchStr: string; List: TStrings; out Index: integer): Boolean; overload; begin Assert(Assigned(List)); Index := List.IndexOf(SearchStr); Result := Index > -1; end; //wie oben, allerdings muss kein Index-Parameter übergeben werden function StringInList(const SearchStr: string; List: TStrings): Boolean; overload; var dummy: integer; begin Result := StringInList(SearchStr, List, dummy); end;
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage