Eingabefeld mit Listenfeld vergleichen
-
Guten Morgen!
Ich habe da eine Frage und zwar habe ich ein Eingabefeld und ein Listenfeld in meinem Programm. Im Listenfeld sind Daten, die ich mit Hilfe des Eingabefeldes aussortieren möchte!
Also angenommen, ich Listenfeld stehen die Worte Affe, Amerika, Baum. Wenn ich im Eingabefeld jetzt den Buchstaben A eingebe, sollen nur noch die Worte Affe, Amerika dort stehen. Wenn ich jetzt noch ein m eingebe, soll nur dort nur noch Amerika stehen.
Kann mir da jemand helfen? Danke!
-
naja fileicht die einzelnen char ferklichen in einer schliefe.
mfg TccoGo
-
Ich weis leider nicht genau, wie ich das machen kann, da ich die Einträge aus einer Textdatei auslese!
CString strOutput; CString english; int pos; CStdioFile stdFileInput("1.lek", CStdioFile::modeRead); while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1) { stdFileInput.ReadString(strOutput); pos=strOutput.Find("|"); english = strOutput.Left(pos); m_ctlAusEn.AddString(english); } stdFileInput.Close();
Könntest du mir ein Beispiel schreiben?
thx!
-
Ablauf:
Länge des Textes im EIngabefeld checken. (unten bezeichnet als anzahl)
Auslesen der Einträge aus dem FileSchleife
Chekcen ob linke anzahl der Zeichen des erstes Wortes aus der Datei gleich dem Eintrag aus dem Eingabefeld.
Wenn ja dann in die Liste.
-
OK, wie liest man die Länge aus und wie würde die Schleife aussehen?
-
Lies mal MSDN zu CListBox::GetCount und CListBox::GetText.
Da ist sogar ein brauchbares Beispiel drin...
-
hallo,
ich kenn mich nicht so in alls CString funktionen aus aber ich könte dir ein biespil char und CString gebe wun dir ziegen wie ich das lösen würde.
wen du möchtest?MFG TaccoGo
-
Jo, her damit
-
eine frage noch du hast gesagt das du eine eingabefeld hast wo der zu suchende sting stecht. wieso list du in dein Beispil aus einder datei?
MFG TaccoGo
-
Ins eingabefeld schreibe ich ein wort z.b. Affe, im listenfeld stehen ganz viele andere wörter, unter anderem Affe. Wenn ich das Wort jetzt eingebe, soll nur noch das dort stehen.
Aus der Datei lese ich, weil ich die wörter nun mal in der datei habe!
-
na ok
CString auswahl; char buf[80],buf2[80]; sprintf(buf,"%s",m_eingabefeld); for (int i=0;i<strlen(buf);i++) { for (int j=0;j<m_ctlAusEn.GetCounnt();j++) { m_ctlAusEn.GetText(j,auswahl); sprintf(buf2,"%s",auswahl); if (buf[i]!=buf2[i]) m_ctlAusEn.DeleteString(j); } }
ich habe es nicht getestet aber ungefär so solte es sien.
MFG TaccoGo
-
achja du musst aber zuerst alle steings aus der datei ins listfel einlesen.
MFG TaccoGo
-
CString suchtext("aff"); // Ist eigentlich ein CString aus deinem EIngabefeld CString ausliste("affe"); // Aus Dateilesen und in CString da Wort schrieben if(ausliste.left(suchtext.GetLength() ==suchtext ) { // ausliste in liste eintragen }
Das ganze in einer Schleife die du ja beim Auslesen sowieso hast.
-
@Unixtom: Deine Antwort verstehe ich gar nicht
@TaccoGo: Das geht leider nichtIch habe jetzt mal etwas versucht, jedoch stürzt dann sobald man einen Buchstaben eingibt das Programm ab...
UpdateData(TRUE); int i; int j; CString bck; for(i=0;i<m_ctlAusDe.GetCount();i++) { for(j=0;j<=strlen(m_strEinDe);j++) { m_ctlAusDe.GetText(i,bck); if(m_strEinDe[j]!=bck[j]) { m_ctlAusDe.DeleteString(i); i--; } } }
Bei dieser Zeile (m_ctlAusDe.GetText(i,bck)) macht er Probleme... Kann mir jemand helfen?
-
Habe es jetzt anders gelöst, trotzdem danke!