Ungültige Konvertierung von der Zeichenfolge in Typ Integer

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Ungültige Konvertierung von der Zeichenfolge in Typ Integer

    Hi,

    ich habe letztens versucht Variablen, die ich als Double und Integer deklariert habe, in eine TextBox zu setzen. Da eine TextBox nur Strings ausgibt, wollte ich die jeweiligen TextBoxen in Integer und Double umwandeln. Nach dem Starten des Programms weist Visual Studio mich auf die Zeile 11 hin. Die Fehlermeldung lautet: "Ungültige Konvertierung von der Zeichenfolge in Typ Integer". Als ich die Typumwandlung auf der Zeile 11 entfernt habe, kam trotzdem die gleiche Fehlermeldung. Fehler dieser Art kamen bei mir schon sehr häufig vor. Option Strict ist bei mir eingeschaltet. Könnt Ihr mir dabei helfen? Irgendwie kriege ich es nicht hin eine explizite Typumwandlung durchzuführen.

    Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim k0 As Double
    4. Dim p As Double
    5. Dim n As Integer
    6. Dim i As Integer
    7. Dim kn As Double
    8. k0 = CDbl(TextBox1.Text)
    9. p = CDbl(TextBox2.Text)
    10. n = CInt(TextBox3.Text)
    11. kn = CDbl(TextBox4.Text)
    12. If IsNumeric(k0 And p) Then
    13. For i = 0 To n Step 1
    14. n = i + 1
    15. kn = k0 * ((1 + p) / 100) ^ n
    16. Next i
    17. TextBox3.Text = CInt(n)
    18. TextBox4.Text = CDbl(k0)
    19. Else MsgBox("Bitte Geben Sie Zahlen ein.", vbCritical)
    20. End If
    21. End Sub
    22. End Class


    Könnt Ihr mir dabei helfen? Irgendwie kriege ich es nicht hin eine explizite Typumwandlung durchzuführen. Ich würde mich über eure Hilfe sehr freuen.


    MfG

    MeSiAk
    Die Text Eigenschaft der Textbox erwarten einen String bzw. gibt dir einen solchen zurück. Was also ist hier falsch:

    TextBox3.Text = CInt(n)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @MeSiAk probiere es einmal so...
    Geht auch mit anderen Wertetypen...
    Sortieren, Palindrom und Wort rückwärts laufen lassen
    Oder besser noch - du verwendest ein NumericUpDown-Control!

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

    Willkommen im Forum. :thumbup:

    MeSiAk schrieb:

    Die Fehlermeldung lautet: "Ungültige Konvertierung von der Zeichenfolge in Typ Integer"
    Wahrscheinlich steht in der TextBox "Roulade mit Klößen" drinne.
    Und:
    Fang an mit Option Strict On.
    Da bekommst Du gleich beim Codieren gesagt, dass und wo da Typen nicht stimmen.
    Visual Studio - Empfohlene Einstellungen
    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!

    RodFromGermany schrieb:

    Fang an mit Option Strict On.
    Der Code ist eigentlich Strict.
    Das Problem dürfte sein, dass CInt erst zur Laufzeit auf die Schnauze fliegt.

    @TE:
    Verwende für Numerische Eingaben ein NumericUpDown-Control.
    Wenn dir das nicht gefällt, arbeite mit TryParse, um zu versuchen, Text in Zahlen zu verwandeln.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Der Code ist eigentlich Strict.

    MeSiAk schrieb:

    TextBox3.Text = CInt(n)
    bringt zur Entwicklungszeit den Strict-On-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!
    Hallo MeSiAk

    In Zeile 6 definierst Du n als Integer [Dim n As Integer]
    In Zeile 11 konvertierst Du den Text von Textbox3 von String nach Integer zu weisst ihn dann n zu [n = CInt(TextBox3.Text)]
    In Zeile 19 konvertierst Du n von Interger zu Integer und weisst das dann dem Text von Textbox3 zu. [TextBox3.Text = CInt(n)]

    Der Datentyp von Textbox.Text ist jedoch String.
    Versuch mal in Zeile 19 mal folgendes: TextBox3.Text = n.ToString

    P.S.
    Ich denke, dass Deine Fehlermeldung "Ungültige Konvertierung von der Zeichenfolge in Typ Integer" nicht von Zeile 19 kommt. Integer in Integer zu konvertieren macht vielleicht keinen grossen Sinn, aber einen Fehler erzeugen sollte das meines Erachtens trozdem nicht.

    Gruss
    Murmeli81

    RodFromGermany schrieb:

    TextBox3.Text = CInt(n) bringt zur Entwicklungszeit den Strict-On-Fehler
    Stimmt.
    So weit war ich in meinen Überlegungen noch gar nicht.
    Ich habe mich auf

    MeSiAk schrieb:

    Nach dem Starten des Programms weist Visual Studio mich auf die Zeile 11 hin
    konzentriert.

    Die erzeugt bei Roulade mit Klößen erst zur Laufzeit einen Fehler.

    Dein Einwand lässt natürlich die Aussage

    MeSiAk schrieb:

    Option Strict ist bei mir eingeschaltet
    in fragwürdigem Licht da stehen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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