Ergebnis 1 bis 8 von 8

Problem mit Visual Basic Studio: System.InvalidCastException wurde nicht behandelt.

  1. #1 Zitieren
    Waldläufer Avatar von Mankar Camoran
    Registriert seit
    Aug 2011
    Ort
    Carac Agaialor
    Beiträge
    172
    Hallo zusammen,
    Ich habe mich mal an an VBS versucht und möchte ein kleines Programm erstellen, mit dem man eine Textdatei erstellen kann, die einige vorgegebene Textstellen hat und einige, die man selbst festlegen kann. Das ganze sieht dann etwa in jeder Zeile so aus:
    Code:
    fs.WriteLine("Text aus Box 1: " + RichTextBox1.Text + "")
    Nun kommt aber beim Debuggen bei der Zeile
    Code:
    fs.WriteLine("ReloadTime " + var4 + "")
    folgender Fehler:
    Spoiler:(zum lesen bitte Text markieren)
    System.InvalidCastException wurde nicht behandelt.
    Message=Ungültige Konvertierung von der Zeichenfolge ReloadTime in Typ Double.
    Source=Microsoft.VisualBasic
    StackTrace:
    bei Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
    bei Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value)
    bei GunCreator.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\Niklas\Documents\Visual Studio 2010\Projects\GunCreator\GunCreator\Form1.Designer.vb:Zeile 428.
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNat iveMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicat ionModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei GunCreator.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=Microsoft.VisualBasic
    StackTrace:
    bei Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)
    bei Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)
    InnerException:

    Kann mir jemand da helfen?
    Mfg, Mankar
    Das Paradis erwartet mich!
    [Bild: TnYXeuQKBMoOmcp.jpg]
    Mankar Camoran ist offline

  2. #2 Zitieren
    Ritter Avatar von Delta 38
    Registriert seit
    Nov 2008
    Ort
    Bremen
    Beiträge
    1.251
    Versuchs mal mit
    Code:
    fs.WriteLine("ReloadTime " + var4.ToString())
    Delta 38 ist offline

  3. #3 Zitieren
    Ritter Avatar von ojas
    Registriert seit
    Jun 2008
    Ort
    Erde
    Beiträge
    1.787
    Zitat Zitat von Mankar Camoran Beitrag anzeigen
    Ungültige Konvertierung von der Zeichenfolge ReloadTime in Typ Double.
    In dem Ausdruck
    Code:
    "ReloadTime " + var4
    sieht der Compiler¹ das Plus-Zeichen, welches auf einen String und ein Double angewendet werden soll. Der Compiler weiß aber nicht, wie eine String mit einem Double addieret werden soll. Deshalb versucht der Compiler, eines der Argumente ("ReloadTime " oder var4) in den Typ des anderen Argumentes umzuwandeln. In diesem speziellen Fall versucht der Compiler, "ReloadTime " in ein Double umzuwandeln. Das geht aber nicht.

    Um zu verhindern dass der Compiler selbst entscheidet, was wohin umgewandelt wird, musst du var4 selbst in einen String umwandeln. Ich vermute, Delta 38 hat dir gezeigt wie das geht; ich habe von Visual Basic überhaupt keine Ahnung.

    --
    ¹ Oder auch die Laufzeitumgebung von Visual Basic, k.A.
    ojas ist offline Geändert von ojas (13.05.2013 um 08:08 Uhr)

  4. #4 Zitieren
    Waldläufer Avatar von Mankar Camoran
    Registriert seit
    Aug 2011
    Ort
    Carac Agaialor
    Beiträge
    172
    Vielen Dank, funktioniert perfekt!
    Das Paradis erwartet mich!
    [Bild: TnYXeuQKBMoOmcp.jpg]
    Mankar Camoran ist offline

  5. #5 Zitieren
    Ritter Avatar von Delta 38
    Registriert seit
    Nov 2008
    Ort
    Bremen
    Beiträge
    1.251
    Ja das meinte ich. Du solltest übrigens zum Verknüpfen von Strings nicht + sondern & nehmen:
    Zitat Zitat von MSDN: Verkettungsoperatoren in Visual Basic
    [...]
    Die primäre Aufgabe von +-Operator (Visual Basic) ist das Addieren zweier Zahlen. Er kann jedoch auch numerische Operanden mit Zeichenfolgenoperanden verketten. Für den +-Operator gilt ein komplexer Satz von Regeln, die bestimmen, ob addiert, verkettet, ein Compilerfehler signalisiert oder eine InvalidCastException-Laufzeitausnahme ausgelöst werden soll.

    Der &-Operator (Visual Basic) wird nur für String-Operanden definiert, und seine Operanden werden immer zu String erweitert, unabhängig von der Einstellung von Option Strict. Der &-Operator empfiehlt sich für die Zeichenfolgenverkettung, weil er ausschließlich für Zeichenfolgen definiert ist und das Risiko einer unbeabsichtigten Konvertierung verringert.
    [...]
    Gruß Delta
    Delta 38 ist offline

  6. #6 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
    Zitat Zitat von Delta 38 Beitrag anzeigen
    Ja das meinte ich. Du solltest übrigens zum Verknüpfen von Strings nicht + sondern & nehmen:


    Gruß Delta
    Hat Visual Basic denn keine Bitoperationen?
    Lehona ist offline

  7. #7 Zitieren
    Ritter Avatar von ojas
    Registriert seit
    Jun 2008
    Ort
    Erde
    Beiträge
    1.787
    Wozu? Der durchschnittliche Visual Basic Programmierer weiß doch noch nicht ein mal, was ein Bit ist.
    ojas ist offline

  8. #8 Zitieren
    Held Avatar von mainclain
    Registriert seit
    Sep 2005
    Beiträge
    5.426
    Zitat Zitat von Lehona Beitrag anzeigen
    Hat Visual Basic denn keine Bitoperationen?
    Doch sicher, And Or Xor Not
    mainclain ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •