try catch mit fehlern



  • Das ist beim Debuggen Standard, starte dein Programm mal ausserhalb der IDE.
    Anschliessend sieh dir den Menüpunkt Tools - Debuggeroptionen und die zugehörigen Hilfeeinträge an.

    Alles Informationen, die du auch mittls der Suchfunktion hier hättest finden können.



  • och mensch
    mag sein das das alles schon mal irgendwo steht aber ich finds nicht. weder hilfe noch suchfunktion bei euch.
    ich möchte doch einfach ein ERROR im edit3 haben wenn etwas anderes eingegeben wird als zugelassen (bzw. eine showmessage). sowas kann doch nicht so schwer sein.
    außerhalb der ide funktioniert das auch nur teilweise mal rechnet er einfach mit nem buchstabe, mal macht er das gewünschte ERROR allerdings mit ner unerwünschten showmessage "gleitkommaüberlauf".
    kann mir jetzt jemand wirklich helfen oder nicht???????

    Edit3->Text = "ERROR";
    
    try
    {
    h = StrToFloat(Edit1->Text);
    g = StrToFloat(Edit2->Text);
    }
    catch(...)
    {
    //ShowMessage("das war keine Eingabe");
    //Edit3->Text = "ERROR";
    }
    
    switch(ComboBox1->ItemIndex)
    {
    case 0 : e = multiplikation(h,g); break;
    case 1 : e = division(h,g); break;
    case 2 : e = addition(h,g); break;
    default : e = multiplikation(h,g); break;
    }
    
    Edit3->Text = e;
    


  • Hi!

    Ich glaube, das Problem ist ganz einfach: Du gibst zwar den Fehler aus, trotzdem rechnest du mit den Zahlen aber weiter...

    Probiert mal sowas:

    Edit3->Text = "ERROR"; 
    
    try 
    { 
    h = StrToFloat(Edit1->Text); 
    g = StrToFloat(Edit2->Text); 
    } 
    catch(...) 
    { 
    ShowMessage("das war keine Eingabe"); 
    //Edit3->Text = "ERROR"; 
    return;  //verlässt die Funktion, so dass es NIE zur nächsten 
             //switch-Anweisung kommen wird
    } 
    
    switch(ComboBox1->ItemIndex) 
    { 
    case 0 : e = multiplikation(h,g); break; 
    case 1 : e = division(h,g); break; 
    case 2 : e = addition(h,g); break; 
    default : e = multiplikation(h,g); break; 
    } 
    
    Edit3->Text = e;
    

    tschüss
    Robert



  • danke
    endlich mal jemand der nicht erst lange um den heißen brei rumredet.
    ich hab mir schon so gedacht es nur was kleines ist aber ich kahm net drauf.
    also danke nochmal
    😃



  • PomBär schrieb:

    danke
    endlich mal jemand der nicht erst lange um den heißen brei rumredet.
    ich hab mir schon so gedacht es nur was kleines ist aber ich kahm net drauf.

    Och das kommt hald davon, wenn man sich nicht des Debuggers bedient...
    UNd das mit dem "um den heissen Brei herumreden" dient lediglich dazu, dich mal etwas dazu zu animieren, selbst etwas mit den Problemen der Fehlersuche zu beschäftigen!

    -junix



  • Hi!

    junix hat natürlich Recht: Das um den heissen Brei reden animiert einem zum Denken - und erst dann programmiert man. Alles sonstige ist Copy & Paste...

    Solche "Komplettlösungen" wirst du daher im Forum eher selten antreffen - nur wenn sich mal wieder einer wie ich "erbarmt" und dir schnell die Lösung schreibt.

    tschüss
    Robert



  • Ich glaube nicht das man hier von einer Komplettlösung sprechen kann nur weil jemand ein return; vergessen hat.



  • Darkfalcon schrieb:

    Ich glaube nicht das man hier von einer Komplettlösung sprechen kann nur weil jemand ein return; vergessen hat.

    ...was er mit dem Debugger auch leicht selbst hätte rausfinden können. Nur kümmert sich hier ein Minimum der Leute die Fragen ala "geht ned" erstellen darum, was eine IDE sonst noch so an Funktionalität mitbringt, ausser Compiler und Syntaxhighlightning.

    Insofern ist der Ausdruck "Komplettlösung" absolut gerechtfertigt.

    -junix



  • junix schrieb:

    Insofern ist der Ausdruck "Komplettlösung" absolut gerechtfertigt.

    Also, obwohl ich noch nicht lange in diesem Forum bin, fällt schon auf, dass hier viele Anfänger sind, die sich nicht mal die Mühe machen etwas Eigeninitiative zu zeigen. Und eigentlich sollte man schon voraussetzen, dass man sich erstmal ein paar Bücher oder Tutorials zu Gemüte führt. Oder zumindest mal die Hilfe zu Rate zieht. Auch wenn dabei am Anfang mehr Fragen entstehen, als Antworten gefunden werden, da muss man durch. Lustigerweise gibt es hier sogar ein paar Kandidaten, die verteilen ihre Fragen auf verschiedene Foren und präsentieren die dort erlangten 'Erkenntnisse' als 'bisher hab' ich'...



  • Ich wollte mit meinem Beitrag keine Grundsatzfrage lostreten.

    Ich bin auch der Meinung das man erst einmal selber versuchen sollte auf die Loesung zu kommen, selber zu suchen und nachzulesen.

    Aber bei diesem Beitrag finde ich es schon ein wenig hart.

    Hier hat man einfach nur etwas uebersehen.
    Und nicht jeder kann direkt mit dem Debugger umgehen.
    (Soll keine Entschuldigung sein man kann es ja lernen).

    Meine Meinung halt. 🙂



  • Darkfalcon schrieb:

    Und nicht jeder kann direkt mit dem Debugger umgehen.

    Was glaubst du, wieso ich mir die Mühe mache und an in jedem Post in dem ich den Debugger erwähne auch noch das Wort mit diesem Link hinterlege: http://www.junix.ch/bcb/help/debug.html ?!? Aber schon klar... ist hald bequemer das Fehlersuchen "out zu sourcen"... ist ja nicht zuletzt auch modern...

    -junix


Anmelden zum Antworten