Anfänger Problem mit seltsamer Fehlermeldung

  • Hi Leute

    Ich bin neu bei C# und wollte jetzt ein kleines Programm schreiben. C# ist meine erste Programmiersprache, deshalb wird der Fehler wahrscheinlich sehr trivial sein, aber ich seh ihn einfach nicht.

    Ich habe ein Textfeld, ein label und noch ein Textfeld. Ausserdem ist noch ein Button da, der alles rechnet.

    Ich will nun, dass wenn ich auf den Button klicke, dass die eingabe in Textfeld1 und Textfeld2 multipliziert wird und in label1 ausgegeben wird.

    so weit so gut:

    Im Quellcode unter Button hab ich das drinnen stehn:

    decimal a, b, c;
    a= decimal.Parse(label4.Text);
    b= decimal.Parse(textBox2.Text);
    c= decimal.Parse(textBox17.Text);

    a = b * c;
    System.Convert.ToSingle(label4.Text);

    Müsste ja eigentlich passen oder?

    Beim ausführen vom Programm kommt allerdings dieser Fehler:

    formationen über das Aufrufen von JIT-Debuggen
    finden Sie am Ende dieser Meldung, anstatt in diesem Dialogfeld.

    ************** Ausnametext **************
    System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
    at System.Number.ParseDecimal(String s, NumberStyles style, NumberFormatInfo info)
    at System.Decimal.Parse(String s, NumberStyles style, IFormatProvider provider)
    at System.Decimal.Parse(String s)
    at Umrechner.MainForm.Button1Click(Object sender, EventArgs e) in c:\Dokumente und Einstellungen\Peter.EIERKISTE.000\Eigene Dateien\SharpDevelop Projects\Umrechner\MainForm.cs:line 701
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Geladene Assemblys **************
    mscorlib
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
    ----------------------------------------
    Umrechner
    Assembly-Version: 1.0.1902.15954
    Win32-Version: 1.0.1902.15954
    CodeBase: file:///C:/Dokumente%20und%20Einstellungen/Peter.EIERKISTE.000/Eigene%20Dateien/SharpDevelop%20Projects/Umrechner/bin/Debug/Umrechner.exe
    ----------------------------------------
    System.Windows.Forms
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
    ----------------------------------------
    System
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
    ----------------------------------------
    System.Drawing
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
    ----------------------------------------
    mscorlib.resources
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_de_b77a5c561934e089/mscorlib.resources.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Assembly-Version: 1.0.5000.0
    Win32-Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_de_b77a5c561934e089/system.windows.forms.resources.dll
    ----------------------------------------

    ************** JIT-Debuggen **************
    Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
    Konfigurationsdatei der Anwendung oder des Computers
    (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
    Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

    Zum Beispiel:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
    Ausnahmen an den JIT-Debugger gesendet, der auf dem
    Computer registriert ist, und nicht von diesem Dialogfeld behandelt.



    Wie schon gesagt ich bin Anfänger, aber ich werd nicht schlau draus. Ich finde diesen blöden Fehler einfach nicht :coolgrim:

    Wäre für jede Hilfe dankbar

  • und was gibst du in das textfeld ein?

    diese exception tritt normalerweise auf, wenn du zb Integer.Parse für einen Text wie "hugo" aufrufst, also der text gar keine zahl ist. EDIT: vermutlich tritt sie auch auf, wenn das textfeld leer ist. noch mal EDIT.. oh, es ist ein label, kein textfeld :) trotzdem muss der text eine zahl sein, um ihn konvertieren zu können..

    normalerweise fängt man die exception zB so auf:

    Code
    int i = 0;
    try
    {
         i = Integer.Parse (Textfeld1.Text);
    }
    except (System.FormatException e)
    {
         System.Windows.Forms.MessageBox.Show ("Bitte geben Sie eine Zahl ein.");
    }

    wenn du F5 gedrückt hast, um das programm auszuführen, müsste VS doch ohnehin im quelltext die zeile anzeigen, welche die exception ausgelöst hat.

    lg michi

  • darf ich fragen, was du in diesen wenigen zeilen code sinnvoll bewerkstelligst willst?



    was steht denn bei dir in einem label drin?
    wozu konvertierst du den label inhalt in eine variable?
    wo erfolgt dann die ergebniszuweisung?

    abgesehen von diesen fragen, tipp ich mal ganz scharf, daß du komma zahlen eintippst in deiner applikation und decimal nun mal eine ganzzahlige zahl ist - sprich du wirst damit eine



    bekommen.

  • Zitat von lerod

    abgesehen von diesen fragen, tipp ich mal ganz scharf, daß du komma zahlen eintippst in deiner applikation und decimal nun mal eine ganzzahlige zahl ist - sprich du wirst damit eine [nfe] bekommen.

    ganz im gegenteil, decimal ist floating-point.
    er hat sogar 28 signifikante dezimalstellen (das hab' ich jetzt abgeschrieben) :D

    eine mögliche fehlerquelle ist aber die unterscheidung "." und ","... ich weiß aber nicht, wie das die parse-funktionen genau handhaben.. habe auch im moment kein windows in der nähe, um es zu testen..

    lg michi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!