switch
-
Hallo, Leute. Brauche Ihre Hilfe. Also, ein ComboBox. Man wählt einen Wort
aus ComboBox1.Dann klickt auf Button und in ComboBox2 wirt geladen
entsprechende Liste.Bei mir kommt immer Fehler. So mache ich dass:UpdateData(TRUE); CString m_sComboBox1; //Value-Variable CComboBox1 switch(m_sComboBox1) { case "Wort_1": bla-bla-bla; break; case "Wort_2": bla-bla-bla-; break; ... }Und bekomme Fehlermeldung:
error C2450: switch expression of type 'CString' is illegal error C2051: case expression not constantIch danke voraus.
-
Sagt die Fehlermeldung ja schon.
Man kann switch keinen CString geben.
versuche es z.B. mit einer
if(m_sComboBox1 == "Wort_1")
{
}if(m_sComboBox1 == "Wort_2")
{
}Es gibt sicher noch bessere Lösungen aber da müsste man mal dein Gesamtkonzept kennen.
-
hmmm
ausser die liste hat die gleiche reihenfolge
dann kannst du ja die zeilenposition nehmen
und dann switch machen
sprich in der liste in ganz oben
dann switch case 0
uswoder du machst define z.b.
define wort_1 = 0
wort_2 = 1
und dann switches gibt viele möglichkeiten
PS sag was du nimmst
-
Es ist sowieso *die* Regel, sich niemals auf UI-Strings zu verlassen. was passiert, wenn z.B. jemand deine Anwendung nach türkisch portiert?
Für Comboboxes heißt das: jedem String mit SetItemData einen ID zuordnen - und über den kannst du dann switchen (aber das ist nurein netter Nebeneffekt).
-
Also, da bin ich wieder. Ich habe probiert mit GetItemData, kommt aber Warning:
Debug Assertion Failed!Da ist Code:
... int i, iWahl; for(i=0; i <= m_ctlCombo.GetCount(); i++) { iWahl = m_ctlCombo.GetItemData(i); switch(iWahl) { case 0: ... MessageBox((LPCTSTR)iWahl, "", MB_OK); //Überprüfen, ob kommt überhaupt was heraus break; case 1: ... MessageBox((LPCTSTR)iWahl, "", MB_OK); //Überprüfen, ob kommt überhaupt was heraus ... } }Und MessageBox kommt immer leer. Was soll ich jetzt tun?
Ich danke voraus.
-
Du kannst nen int nicht einfach "blind" nach LPCTSTR casten ... atof, CString::Format oder ähnliches.
-
Kannst du mir zeigen, wie
konvertiert man einen Integer nach LPCTSTR ?
Und eigentlich, dass ist nicht so wichtig.
Trotzdem in zweite ComboBox kommt immer die gleiche.
MessageBox ist hier nur für Überprüfung.Also, ein ComboBox. Man wählt einen Wort aus ComboBox1.Dann klickt auf Button und in ComboBox2 wirt geladen entsprechende Liste
-
CString IntToCString(int iVal){CString sStr; sStr.Format("%d",iVal);return sStr); MessageBox(IntToCString(iWahl), "", MB_OK);
-
Also, jetzt mein MessageBox funktioniert.
Und es zeigt, das Problemm wie frühe liegt in
for oder switch. Ich denke in for, weil
MessageBox zeigt immer 0.
-
wann rufst du CComboBox::SetItemData auf? /* * Combo Box return Values */ #define CB_OKAY 0 #define CB_ERR (-1) #define CB_ERRSPACE (-2)
-
Jetzt alles funktioniert. Mit GetCurSel().
Danke für alles.