Suchen in RichEdit



  • Hallo, ich habe folgendes Problem:

    Ich habe eine RichEdit1, wo in mehreren Zeieln etwas drin steht, z.B. Filmtitel
    Jetzt habe ich ein zweites RichEdit2 Fenster. hier gebe ich ein Wort ein. Dieses Wort soll in ReichEdit1 gesucht werden. Alle Treffer sollen in einem dritten RichEdit3 Fenster angezeigt werden.
    Wie stelle ich das am Besten an? Kann mir jemand weiterhelfen?

    momentaner Quellcode:

    if(edi_Suchen->Text != "")
          {
             if (edi_Suchen->Text == /*Wort in RichEdit1*/)
             {
    
             }
             else
             {
             MessageBox(NULL, "Wort nicht gefunden","Ergebnisse",MB_OK);
             }
          }
          else
          {
          MessageBox(NULL, "Bitte geben Sie einen Titel an!","Ergebnisse" ,MB_OK);
          }
    

    Gruß webid



  • Hallo

    siehe die Methode TRichEdit::FindText.

    bis bald
    akari



  • ich habe mir das mal angeschaut, aber habe bei dem beispiel irgendwie nicht durchgesehen.

    Am Besten ich erläutere es nochmal genauer.

    In einem RichEdit-Fenster bzw. einer ListBox steht in jeder Zeile ein Filmtitel.
    Jetzt möchte ich in einem Edit-Fenster den Titel bzw. ein Schlagwort eingeben. Dieses Wort soll mit den einzelnen Titeln verglichen werden.
    In einem anderen RichEdit-Fenster sollen die Titel, in dem das Wort vorkommt, wiedergegeben werden.

    Wie mache ich das? Kann mir jemand einen Quellcode zum besseren Verständnis geben?

    Vielen Dank im Voraus

    Webid



  • webid schrieb:

    In einem RichEdit-Fenster bzw. einer ListBox steht in jeder Zeile ein Filmtitel.

    Was denn jetzt? Listbox oder Richedit? Wenn ListBox, dann musst du die einzelnen String durchsuchen. Wenn Richedit, siehe akaris Post.

    Solltest du mit FindText Schwierigkeiten haben, dann zeig mal deine Ansätze und wir sehen, ob wir dir weiter helfen können.



  • Es ist ListBox



  • Hallo

    bei ListBox siehe die die Eigenschaft TListBox::Items, insbesondere die Methode IndexOf(), wenn du eine ganze Zeile finden willst, oder das Array Strings, um die einzelnen Zeilen intern mit Pos() zu durchsuchen.

    bis bald
    akari



  • Danke für den Tip. Ich habe mal geschaut ob es ein Beispiel gibt. Habe aber nichts gefunden.

    Hier mein Code. Komme irgendwie nicht weiter.

    if(edi_Suchen->Text != "") //Schaue ob hier etwas steht
      {
         for(i=0;ListBox1->Items->Strings[i]!=""; i++) schaue in jedem String nach
         {
               for (j=0;Pos(j)!="";j++)
               {
                 if (edi_Suchen->Text == ListBox1->Items->Strings->Pos(j))  ???????ß
                 {
    
                 }
               }
         }
      }  
    else  //wenn nichts steht, soll folgende Message ausgegeben werden.
    {
    MessageBox(NULL, "Bitte geben Sie einen Titel an!","Ergebnisse" ,MB_OK);
    }
    

    Was ist falsch, wie geht es besser?



  • Hallo

    if (edi_Suchen->Text == ListBox1->Items->Strings->Pos(j))  ???????ß
    

    Schau dir nochmal an, welche Parameter Pos() hat, und welchen Rückgabewert.
    diese Bedingung muß natürlich heißen

    if (ListBox1->Items->Strings->Pos(edi_Suchen->Text) > 0)
    

    bis bald
    akari


Anmelden zum Antworten