Direktfenster zeigt Fehler an: System.FormatException

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Direktfenster zeigt Fehler an: System.FormatException

    Hallo Leute,

    beim starten von folgendem Code bekomme ich immer die Fehlermeldung: System.FormatException

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public t As Double = 0
    3. Public e31 As Double = 0
    4. Public e32 As Double = 0
    5. Public z1 As Double = 0
    6. Public z2 As Double = 0
    7. Public alpha As Double = 0
    8. Public d1 As Double = 0
    9. Private Sub cmdRechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRechnen.Click
    10. lblSchalter.Visible = False
    11. End Sub
    12. Private Sub lblSchalter_VisibleChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblSchalter.VisibleChanged
    13. Dim a1, a2, b1, b2, c As Double 'als lokale variablen, damit später wiederverwendbar'
    14. Try
    15. t = Convert.ToDouble(txtTragrollenabstand.Text)
    16. e31 = Convert.ToDouble(txtAchszapfenMR.Text)
    17. e32 = Convert.ToDouble(txtAchszapfenSR.Text)
    18. d1 = Convert.ToDouble(txtTragrollendurchmesser.Text)
    19. alpha = Convert.ToDouble(txtmuldungswinkel.Text * (Math.PI / 180))
    20. c = t / (2 * Math.Cos(alpha / 2))
    21. b1 = (c + e31) / Math.Tan(alpha / 2)
    22. b2 = (c + e32) / Math.Tan(alpha / 2)
    23. a1 = b1 - (0.5 * d1)
    24. a2 = b2 - (0.5 * d1)
    25. z1 = ((c + e31) * a1) / b1
    26. z2 = ((c + e32) * a2) / b2
    27. lblWertZ.Text = "z1: " & Math.Round(z1, 2) & " z2: " & Math.Round(z2, 2)
    28. Catch ex As Exception
    29. 'MsgBox("Es ist ein Fehler aufgetreten: " & ex.ToString, _
    30. ' MsgBoxStyle.Critical, "Fehler!")
    31. lblFehler.Text = "Fehler" & ex.Message
    32. End Try
    33. End Sub
    34. End Class


    Woran liegt das und wie kann ich das beseitigen?

    Vielen Dank schonmal!!

    LG

    HeavyPioneer schrieb:

    und wie kann ich das beseitigen?

    indem Du Try / Catch rausschmeißt und Dir dann den richtigen Fehler anzeigen lässt.
    Wahrscheinlich rufst Du so was auf:

    VB.NET-Quellcode

    1. Convert.ToDouble("Heute ist ein schöner Tag")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Erstmal Danke fürs schnelle Antworten,

    jetzt kommt folgende Meldung: Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Die Eingabezeichenfolge hat das falsche Format..

    hier noch die Detailmeldung:

    System.InvalidOperationException wurde nicht behandelt.
    Message=Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Die Eingabezeichenfolge hat das falsche Format..
    Source=Tragrollenberechnung 2
    StackTrace:
    bei WindowsApplication1.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 190.
    bei WindowsApplication1.My.MyProject.MyForms.get_Form1()
    bei WindowsApplication1.My.MyApplication.OnCreateMainForm() in C:\Dokumente und Einstellungen\hla\Desktop\Delphi\ProgrammVB\Tragrollenberechnung 2\Tragrollenberechnung 2\My Project\Application.Designer.vb:Zeile 35.
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException: System.FormatException
    Message=Die Eingabezeichenfolge hat das falsche Format.
    Source=mscorlib
    StackTrace:
    bei System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
    bei System.Convert.ToDouble(String value)
    bei WindowsApplication1.Form1.lblSchalter_VisibleChanged(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\hla\Desktop\Delphi\ProgrammVB\Tragrollenberechnung 2\Tragrollenberechnung 2\Form1.vb:Zeile 29.
    bei System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
    bei System.Windows.Forms.Label.OnVisibleChanged(EventArgs e)
    bei System.Windows.Forms.Control.AssignParent(Control value)
    bei System.Windows.Forms.Control.ControlCollection.Add(Control value)
    bei System.Windows.Forms.Form.ControlCollection.Add(Control value)
    bei WindowsApplication1.Form1.InitializeComponent() in C:\Dokumente und Einstellungen\hla\Desktop\Delphi\ProgrammVB\Tragrollenberechnung 2\Tragrollenberechnung 2\Form1.Designer.vb:Zeile 111.
    bei WindowsApplication1.Form1..ctor() in C:\Dokumente und Einstellungen\hla\Desktop\Delphi\ProgrammVB\Tragrollenberechnung 2\Tragrollenberechnung 2\Form1.vb:Zeile 10.
    InnerException:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „HeavyPioneer“ ()

    Die Eingabezeichenfolge hat das falsche Format..
    Hatten wir schon.
    In welcher Zeile kommt der Fehler?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Setz mal in die FormLoad einen Haltepunkt (F9) und steppe Dich mit F10 durch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Meinst Du die Zeile 9 in Deinem obigen Code?
    Kann ich mir nicht vorstellen, die steht in der (impliziten) Prozedur New().
    Poste mal genau Deine Zeile 9.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Zeile 25 ist die hier, richtig?

    VB.NET-Quellcode

    1. t = Convert.ToDouble(txtTragrollenabstand.Text


    Ist den der Inhalt der Textbox auch im richtigen Format (also keine Buchstaben)?

    Mfg
    Firestorm
    Welcher Text steht in txtTragrollenabstand.Text :?:
    Convert.ToDouble("Heute ist ein schöner Tag")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    HeavyPioneer schrieb:

    Das Programm läuft ja mit try/catch super.

    Du meinst, du catchst die Fehler weg und es passiert gar nichts. ;(
    Probier mal folgendes:

    VB.NET-Quellcode

    1. Dim txt As String = "12,345"
    2. Dim dd As Double
    3. Dim bb As Boolean = Double.TryParse(txt, dd)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Convert.ToDouble() mit Test:

    VB.NET-Quellcode

    1. Dim txt As String = "12,345"
    2. Dim dd As Double = 0
    3. Dim bb As Boolean = Double.TryParse(txt, dd)
    4. MessageBox.Show(dd.ToString)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Gib Deinem Projekt zunächst Option Strict On.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Klammer verändern bringt keine Veränderung. Option stricton hab ich gemacht. Option strictOn lässt keine implizieten Konvertierungen von string in double zu. das ercheint dann in Zeile 29. txtMuldungswinkel ist gewellt unterstrichen.
    Dann solltest Du doch von Convert.ToDouble() auf Double.TryParse() umsteigen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!