Abfangen von Fehlern funktioniert nicht.



  • Ich wollte eigentlich Fehler, die entstehen, wenn keine Eingabe gemacht wurde abfangen. Allerdings komme ich hier nicht weiter:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "math.h";
    
    float gewinn,hinzu,kurz,ertrag,massgew,massgew1,messbetr,hebesatz,gewsteuer;
    float hebesatz1;
    float floor();
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
         if (Edit1->Text=="") MessageBox(NULL,"Gewinn fehlt!","Fehlermeldung",MB_ICONSTOP|MB_OK);
         else if (Edit2->Text=="") MessageBox(NULL,"Hinzurechnung fehlt!","Fehlermeldung",MB_ICONSTOP|MB_OK);
         else if (Edit3->Text=="") MessageBox(NULL,"Kürzungen fehlt!","Fehlermeldung",MB_ICONSTOP|MB_OK);
         else if (Edit4->Text=="") MessageBox(NULL,"Hebesatz fehlt!","Fehlermeldung",MB_ICONSTOP|MB_OK);
         else
         {
         gewinn=StrToFloat(Edit1->Text);
         hinzu=StrToFloat(Edit2->Text);
         kurz=StrToFloat(Edit3->Text);
         hebesatz=StrToFloat(Edit4->Text);
         ertrag=gewinn+hinzu-kurz;
         massgew=floor(ertrag/100)*100;
         massgew1=massgew;
         Label5->Caption=FloatToStr(massgew);
         messbetr=massgew1*0.05;
         hebesatz1=hebesatz/100;
         gewsteuer=messbetr*hebesatz1;
         Label7->Caption=FloatToStr(messbetr);
         Label9->Caption=FloatToStr(gewsteuer);
         }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Edit1->Clear();
         Edit1->Clear();
         Edit2->Clear();
         Edit3->Clear();
         Edit4->Clear();;
         Label5->Caption="";
         Label7->Caption="";
         Label9->Caption="";
         Edit1->SetFocus();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
         Close();
    }
    //---------------------------------------------------------------------------
    

    Ich bekomme, wenn ich ein Feld leer lasse, mit oder ohne den if Anweisungen
    folgende Fehlermeldung:

    Im Projekt2.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: '''ist kein gültiger Gleitkommawert'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

    Ich habe alles mögliche Probiert und drehe hier bald durch 😞

    Hat vielleicht jemand ne Idee?

    thx
    G-Kar



  • Der Quelltext so wie du ihn gepostet hast scheint korrekt zu sein.
    Was ich mir vorstellen kann ist, dass ein Leerzeichen in dem entsprechenden Edit ist.
    Der Debugger(F7) ist dein Freund.



  • Hallo

    um bei FloatToStr die Exception abzufangen und zu verarbeiten, kannst du try-catch verwenden.

    bis bald
    akari



  • Mein Rechner war generell recht zickig seitdem ich Borland installiert habe.

    Hab es noch mal neu aufgespiel. Jetzt gehts. 😕

    trotzdem
    thx
    G-Kar


Anmelden zum Antworten