GetCurSel() -> Debug Assertion Failed
-
// Sektion comm CString wert4; wert4.Format("%d", /*dlg_Config.m_lBaud1.GetCurSel()*/3); WritePrivateProfileString("comm", "Baud1", wert4, m_exePfad+"config.ini");So krieg ich keinen "Debug Assertion".
Warum so schon?// Sektion comm CString wert4; wert4.Format("%d", dlg_Config.m_lBaud1.GetCurSel()); WritePrivateProfileString("comm", "Baud1", wert4, m_exePfad+"config.ini");*EDIT* m_lBaud1 ist ein Membervariable einer CComboBox
-
Dann guck mal was beim Debuggen im wert4 String steht...
-
GetCurSel() ist vom Typ int
probiers mal mit wert4.Format("%i",...);
Ok hab das falsch in Erinnerung , vergiss das
-
soweit dass ich im Debugger nach dem Wert schauen kann, komm ich ja nicht mal, sprich er nimmt dir da nicht mal nen Wert rein. Hab den Haltepunkt auf dieser Zeile:
wert4.Format("%d", dlg_Config.m_lBaud1.GetCurSel());Verwend ich vll GetCurSel() einfach nur falsch?
Achja, m_lBaud1 Membervariable einer CComboBox und vom Typ Control (möglicherweise spielt das hier ja eine Rolle
)**EDIT**
Problem gelöst, hab schlichtweg den Fehler gemacht, dass ich in der if-Abfrageif(dlg_Config.DoModal() == IDOK) { // }mit GetCurSel() gearbeitet hab. Geht ja nicht, die CCombo existiert zu diesem Zeitpunkt ja schon garnicht mehr...

-
Hallo,
es wundert mich trotzdem das es ok ist, ich dachte das GetCurSel() nur den Index
zurück gibt, nicht aber den Inhalt, was von den beiden möchtest du speichern?lg
pixel
-
soll nur der index sein. Weil ich beim Standardwert festlegen (sprich der Wert, den ich aus meiner config.ini hol) der ComboBox in meinem Einstellungsdialog dann einfacher festlegen kann. Oder gibt es die Möglichkeit, anhand meines Strings die Selection fest zu legen??? Das wär natürlich eine Maßnahme...
-
ich hab nur gedacht, wegen deinen beispiel, in dem du den wert 3 genommen hast,
da must du daran denken, das der erste index mit 0 anfängt, so würde ein
GetCurSel() , bei ersten eintrag eine 0 zurückgeben und nicht eine 1, ist das gewollt?
der zweite eintrag natürlich dann nicht eine 2! sondern eine 1!!!
zu deinen beispiel, du hast eine 3 als parameter übergeben, das heist das der 4
element ausgewählt werden muß, damit GetCurSel() eine 3 auch zurückgibt:
mach so:CString wert_4; int iSelectedIndex = m_cComboBox.GetCurSel(); m_cComboBox.GetLBText(iSelectedIndex, wert_4); // so bist du sicher dass das was ausgewählt wurde auch in die ini gespeichert wird! // jetzt wert_4 in die ini speichern! // verkürzt geht auch: m_cComboBox.GetLBText(m_cComboBox.GetCurSel(), wert_4); // sparst dir eine variableso dachte ich das

lg
pixel
-
ja, das passt so
alles so gewollt.Jetz hast mich aber auf eine Idee gebracht, die mir die Arbeit wahrscheinlich gehörig erleichtern könnte:
Wenn ich jetzt den ausgewählten String speichern (und beim reinladen natürlich) verwenden will. Wie übergeb ich der Combobox meinen String als Default. Wie ich der Combo mitteil, welcher Index als Standard festgelegt sein soll is klar, da mach ich schlichtweg mit
SetCurSel( int nSelect );Aber wie mach ich das mitm String, gibts sowas wie
SetLBText()hab jedenfalls nix gefunden in den Class-Members
-
ja, das geht auch, z.Bsp. in OnInitDialog(),
if(CB_ERR == m_cUrlList.SelectString(indexwert, textwert)) AfxMessageBox("Fehler....!"); // Fehlerbehandlungso kannst du schon vor dem anzeigen deines dlg's den standard wert auswählen!
lg
-
Problem gelöst!!
Danke Pixel!
