Suchfunktion wie (C++Builder-Hilfe unter Index)



  • Moin zusammen,

    ich sitz mal wieder an einer kleinen Suchfunktion. Sie soll so aussehen wie die von der Borland Hilfe sprich ich geben einen Buchstaben ein und es erscheinen alle Ergebnise die mit diesen Buchstaben anfangen.

    Also hab das schon soweit, dass wenn ich alle Suchergebnise bekomme. Gebe ich jedoch den 2 Buchstaben ein findert er auch meine neuen Ergebnise löschte aber die alten aus der Listbix nicht..

    wie löse ich das am besten mit ListBox1->Items->Clear();
    geht es irgendwie nicht..

    jemand ne idee ?

    Mfg

    |10111|

    if (Key != 8)
          {
          for (int i = 0; i<TeleList->Count; i++)
                  {
                  asString = TeleList->Strings[i];
                  for (Index; Index < 256;Index++)
                         {
                          if (asString.Length() >= Index)
                              {
                              if ((asString[Index] == Key) && (Index == 1))
                                      {
                                      FindList->Add(TeleList->Strings[i]);
                                      break;
                                      }
                              else
                                    if (asString[Index] == Key)
                                              {
                                              asString = asString.SubString(1,Index-1);
                                              if (asString == asText)
                                                      {
                                                      FindList->Add(TeleList->Strings[i]);
                                                      break;
                                                      }
                                              else break;
                                              }
                                    else break;
                              }
    
                          }
                  }
          Form1->ListBox1->Items = FindList;
          asText = asText + Key;
          Index++;
          }
    else
            {
            asText = asText.Delete(Index-1,1);
            Index = Index - 1;
            delete FindList;
            if (Edit1->Text.Length() == 0)
                    {
                    Index = 1;
                    asText = "";
                    }
            }
    }
    


  • Hallo,
    du kannst mit der Funktion

    TListBox->Items->Delete(int x);
    

    die Spalte x löschen, also z.B. durch

    ListBox1->Items->Delete(0);
    

    die erste Zeile!

    Geh einfach dynamisch alle Verfügbaren Zeilen durch und lösche diese dann, das sollte funktionieren!

    Edit:
    z.B. so:

    while(ListBox1->Items->Count != 0)
            ListBox1->Items->Delete(0);
    


  • danke für den Tip, bin ich aber auch schon drauf gekommen. geht aber nicht.. wieso auch immer..

    und ob ich jetzt mit:

    ListBox1->Items->Delete(0);
    

    die einzelnen Zeilen löschen oder gleich mit

    ListBox1->Clear();
    

    den ganzen Inhalt der Listbox ist ja wohl egal wobei dei 2 Wahö, wohl besser ist..



  • ListBox1->Items->Clear(); sollte grundsätzlich funktionieren. Setzte doch mal an entsprechender Stelle einen Breakpoint und steppe im Debugmodus durch. So kommt man am ehesten auf evtl. Logikfehler etc. 😉



  • War mein Fehler. Ein dummer Denkfehler. Ich hab versucht die Listbox zu löschen aber ich müsste einfach nur die StringList leer machen und schon war das Problem weg.. *grrrrrr*



  • Na sowas !
    Solche Schusselfehler sind mir noch NIE passiert 😃 😃 😃


Anmelden zum Antworten