Teilstring suchen
-
Ich habe einen Dialog, der eine Art Karteikarte aus einer Liste von Karteikarten anzeigt, in verschiedenen Edit Feldern. Nun will ich eine Suchfunktion implementieren, die folgendermassen funktioniert:
ich lösche den Text aus einer der Editboxen und schreibe eine zu suchende Zeichenkette hinein, z.B. "Hans". Nun soll nach dem nächsten Eintrag der "Hans" enthält gesucht werden. Das klappt auch so wie ich es mir gedacht habe ganz wunderbar, nur wenn jetzt etwas gefunden wird und im Feld steht "Hans Meier", dann wird bei jedem weiteren Suchvorgang nach "Hans Meier" gesucht, nicht mehr bloss nach "Hans".
Wie kann ich die Ursprünglich gesuchte Zeichenkette behlten. Also wenn ich nach "Hans" suche, "Hans Meier" erhalte, damit nihct zufrieden bin und daher nochmals aus "Suche" drücke das Dingens weiter nach "Hans" und nicht "Hans Meier" suchen lassen um so vielleicht "Hans- Georg Eiche" oder so zu finden.
Mein Code in Auszügen:void CVereinVersion0_2Dlg::OnBnClickedSuch() { bool bFound=false; UpdateData(true); string sSuche; // soll den zu Suchenden String aufnehmen sSuche=m_strHead; while(bFound!=true) { m_pCVerwaltung->records++; // Die Codezeilen für ergebnislose Suche habe ich hier weggelassen if((*(m_pCVerwaltung->records))->ShowHead().find(sSuche)!=string::npos) { m_strHead=(*(m_pCVerwaltung->records))->ShowHead().c_str(); UpdateData(false); bFound=true; continue; } } }
-
versuch mal CString - siehe MSDN
-
CString hat auch nichts besseres als die Find Methode zu bieten, die ich im übrigen verwende (allerdings die vom Standard string). Das Problem ist ja nicht, dass ich inhcts finde, sondern das Problem ist, dass ich den zu suchenden String über eine Suche (einmal Button geklickt) hinaus behalten will, also bei einem weiteren Tastendruck der ursprünglich gesuchte String wieder gesucht wird und nicht das ergebnis der ertsen Suche.
-
Na wie wärs dann mit ner Hilfsvariable die das speichert ?
-
habe ich auch schon überlegt, aber wo im Programm soll ich die am sinnvollsten hin packen?
-
Da man das Programm nicht kennt weiß man nicht so genau wo bei Dir der beste platz ist.
Wenn alles im Dialog abläuft wäre eine private membervariable im Dialog sinvoll.
-
Danke, werde ich mal ausprobieren, muss jetzt nur leider weg und kann das erst morgen machen.
-
Habe einfach die Suche in einen eigenen Dialog verfrachtet, das vereinfacht das ganze! Danke trotzdem!
