Edit Box fürt zum Absturz !?



  • Hallo,

    ich habe in einem Dialog eine Editbox um vom Nutzer ganzzahlige Werte abzufragen. Sobald jedoch irgendeine Eingabe gemacht wird bzw. diese mit Enter bestätigt wird stürzt das ganze Programm ab.

    void CMyDlg::OnChangeEditb1()
    {
      UpdateData(TRUE);
    
      // Wert wird in Data Objekt gespeichert und durch eine Bereichsüberprüfung
      // evtl. geändert.
      Data.setNumber((double) m_init_number);
      m_init_number = (unsigned int) Data.getNumber();
    
      UpdateData(FALSE);
    }
    

    Sieht jemand einen Fehler ?

    Grüße



  • Hilfreich währe vielleicht wenn du mal mit dem debuger schaust wo der gerade hängt, beobachte mal den Call-Stack



  • Außerdem kannst du dir doch einen Breakpoint an den Anfang des Handlers setzen und dann schrittweise durchgehen. So findest du die fehlerhafte Zeile auch sofort. Debuggen ohne Debugger ist selten ratsam.



  • Ist der "Absturz" vielleicht das hier?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39095.html



  • isabeau schrieb:

    Ist der "Absturz" vielleicht das hier?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39095.html

    Klar, OnOK, er sagt ja auch "Enter-Taste"... (*an-den-Kopf-klatsch*)



  • Hallo,

    leider tritt das nicht nur bei Enter auf sondern sobald irgendetwas in diese editbox geschrieben wird.



  • Ja und hast du die Ratschläge denn mal befolgt (Callstack, Breakpoint...)? Was hast du rausgefunden?



  • jupp,

    sorry, bin absoluter Anfänger! Tue mich daher noch etwas schwer. Ich habe für die Edit Box eine Update Funktion, in dieser habe ich einen Breakpoint gesetzt

    void CMyDlg::OnUpdateVariable()
    {
     UpdateData(TRUE);
    
     pApp->Daten.setVariable((double) this->m_Variable);
    
     // Nimmt gleichzeitig eine Bereichsüberprüfung vor, deshalb dieses hin und her
     // vor der nächsten Zeile ist der Breakpoint gesetzt.
     this->m_Variable = (int) pApp->Daten.getVariable();
    
     UpdateData(FALSE);
    }
    

    Wenn ich in dieser EditBox bspw. 47 eingebe, befindet sich nachher nur die 4 in der Variable m_Variable (UINT m_Variable).

    Enter muß nicht gedrückt werden, der Abbruch erfolgt gleich nach der ersten Eingabe.

    Die Membervariable vom Objekt Daten, die mit setVariable() gesetzt werden soll enthält nachher den Wert 1.

    Das ganze ist sicherlich ein sehr einfaches Problem. Stehe aber echt am Anfang und meine MFC-Kenntnisse sind eher schlecht als recht.


Anmelden zum Antworten