Programmabsturz bei leerem eingabefeld...



  • ReneS schrieb:

    Morgääänn,

    Ich bezweifle erlich gesagt das sich das Programm beendet nur weil du die felder leer machst. 😕
    Hast du eventuell den OK Button als Standard drin und dann Enter gedrückt?

    MFG

    RS

    Ne....

    Ich habe das Programm so Programmiert, das der alle Berechnungen ausführt, sobald sich etwas in dem eingabefeld ändert, also habe ich keinen OK Button...

    Das muss auch so sein für das Programm, nur wenn da nichts drinn steht, kann der Anscheinend nicht rechnen, und schließt sich...



  • Definiere doch einfach grenzwerte z.B.: von 0 bis 100.
    Das kannst du dort machen wo du m_eingabe definiert hast.
    Oder du holst dier in der Update Funktion die länge des Feldes und wenn diese NULL/0 ist schreibst du ne 0 rein.(Danach erst das Update.)



  • Habe ich schon versucht, aber irgendwie stürzt der schon ab, bevor die Update Funktion aufgerufen wird...

    Das mit den Grenzwerten ging auch nicht. Aber wenn ich es einstelle, das er erst wieder rechnen soll, wenn die OK taste gedrückt wurde, geht es mit den Grenzwerten.

    Aber das muss ja anders, es muss ja berechnet werden, sofort wenn der wert geändert wurde...



  • Bevor du mit deiner Berechnung anfängst kannst du doch prüfen ob in den Variabeln ein Wert steht.
    Wenn nicht dann kannst du doch null rein setzten.
    z.B.:

    if(m_eingabe == NULL)
    {
    m_eingabe = 0;
    }
    else
    {
    //....Deine Berechnung
    }
    

    MFG

    RS



  • Naja,... und wenn jetzt die Berechnung so aussieht: x = 10 / m_eingabe ?



  • if(m_eingabe == NULL)
    {
    doNothingLoop();//Von MS geklaut!  :D 
    }
    else
    {
    berechnung();
    }
    


  • Ah, ja.

    [edit]

    Von MS geklaut!

    Dann muss es ja funktionieren ! 😃
    [/edit]



  • Ist doch eine Lösung oder? 😃



  • Bei mir funktioniert so eine Abfrage weder auf einen int, noch auf einen CString:
    if(m_eingabe == NULL)

    Leider wird ja der fehlerhafte Code nicht gezeigt...



  • Das sollte ja auch nur ein beispiel sein wie man sich wenigstens etwas absichern könnte.
    Wenn ich jetzt den Code hier hätte könnte ich natürlich auch etwas eleganteres und sinngemäses schreiben.
    Da ich aber weder weis welche berechnung er/sie hat, noch wie sein/ihr Code aussieht kann ich nur raten.
    Denn was anderes passiert in diesem Forum zu 80% eh nicht.
    Eine 99,9%ige Antwort kann man nur geben wenn man in dem Thema ist, wenn man den Code hat und wenn man genau weis wie das problem zu lösen ist.
    All diese möglichkeiten sind aber meist nicht gegeben.
    Deswegen NUR ein Beispiel.

    MFG

    RS



  • ReneS schrieb:

    Das sollte ja auch nur ein beispiel sein wie man sich wenigstens etwas absichern könnte.
    Wenn ich jetzt den Code hier hätte könnte ich natürlich auch etwas eleganteres und sinngemäses schreiben.
    Da ich aber weder weis welche berechnung er/sie hat, noch wie sein/ihr Code aussieht kann ich nur raten.
    Denn was anderes passiert in diesem Forum zu 80% eh nicht.
    Eine 99,9%ige Antwort kann man nur geben wenn man in dem Thema ist, wenn man den Code hat und wenn man genau weis wie das problem zu lösen ist.
    All diese möglichkeiten sind aber meist nicht gegeben.
    Deswegen NUR ein Beispiel.

    MFG

    RS

    Es tat bei mir aber auch nicht.

    Ich habe mittlerweile die Ursache genau gefunden. Es liegt an den Integer Eingabefeldern. Denn bei allen Integerfeldern beendet sich das Programm wenn die Felder leer sind, egal ob damit gerechnet wird, oder nicht.

    Ich habe jetzt alle meine Eingabefelder als CString Definiert, und mir eine Umrechnungsfunktion erstellt, dauert jetzt noch ein bischen, bis ich das mit allen eingabefeldern gemacht habe, aber es klappt hervoragend.

    Danke noch mal für eure Hilfe.... 👍 😃



  • Das kann/darf aber nicht die Ursache sein.
    Denn Ob ein Eingabe Feld jetzt ein Integer oder einen String beherbergt ist für das eigentliche Programm scheissegal.
    Rein Teopraktisch muss es an etwas anderem liegen.
    Aber schön das es jetzt geht.

    MFG

    ReneS



  • ReneS schrieb:

    Das kann/darf aber nicht die Ursache sein.
    Denn Ob ein Eingabe Feld jetzt ein Integer oder einen String beherbergt ist für das eigentliche Programm scheissegal.
    Rein Teopraktisch muss es an etwas anderem liegen.
    Aber schön das es jetzt geht.

    MFG

    ReneS

    Ja, das habe ich ja auch gedacht.

    Und dann habe ich einfach ein neues Eingabefeld mit einer Integer Variable erstellt, ohne jegliche Funktion. Programm gestartet. Zahl gelöscht. Programm hat sich beendet....

    Nun ja, vielleicht hab ich irgendwo im Quellcode noch Müll stehen, bin gerade am ausmissten.... Weil ich habe so viel rumprobiert, da liegt jetzt so viel Müll drinn... 😃


Anmelden zum Antworten