kostenloser Webspace werbefrei: lima-city


[Delphi] Listboxabfragen

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    metin2-fun

    metin2-fun hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    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
  4. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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
  5. Autor dieses Themas

    metin2-fun

    metin2-fun hat kostenlosen Webspace.

    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ööö ^^
  6. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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
  7. 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;
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!