vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
InvalidCastException 
Autor: lopey
Datum: 06.05.17 20:23

Hallo,

bekomme bei dieser Abfrage leider immer einen Fehler wenn ich z.B. 80000 eingebe.
Dachte das es mit der Umstellung auf Object weg ist, war aber nicht so :

Hier mal meine Abfrage:

Private Sub TextBox3_KeyDown(sender As Object, e As KeyEventArgs) Handles _
  TextBox3.KeyDown
        Dim länge As Object = TextBox3.Text
 
        If e.KeyCode = Keys.Enter Then
            If länge = "" Then
                MessageBox.Show("Kein Wert vorhanden.", "Fehler")
            Else
                If länge >= 300 And länge <= 2500 Then
                    TextBox4.Focus()
                End If
                If länge > 2500 Then
                    MessageBox.Show("zu lang" & vbCrLf & "Bitte Wert kürzer" & _
                      "2500 eingeben ! ", "Fehler")
                    länge = ""
                    TextBox3.Focus()
                End If
                If länge < 300 Then
                    MessageBox.Show("zu kurz " & vbCrLf & "Bitte Wert länger" & _
                      "300  eingeben ! ", "Fehler")
                    länge = ""
                    TextBox3.Focus()
                End If
 
            End If
 
        End If
    End Sub
 
    Private Sub TextBox3_KeyPress(sender As Object, e As KeyPressEventArgs) _
      Handles TextBox3.KeyPress
        Select Case Asc(e.KeyChar)
            Case 48 To 57, 8 ', 32
                ' Zahlen, Backspace und Space zulassen
            Case Else
                ' alle anderen Eingaben unterdrücken
                e.Handled = True
        End Select
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: Manfred X
Datum: 06.05.17 22:27

Hallo!

Für die Variable "Länge" scheint Integer der geeignete Datentyp zu sein.
Prüfe das Vorliegen einer entsprechend konvertierbaren Zeichenfolge in der
Text-Eigenschaft der Textbox zunächst durch die Integer.TryParse-Methode.

Die Deklaration als "Object" hilft Dir nicht, weil Du den Wert in "Länge"
gegen numerische Werte prüfst.
Du solltest immer geeignete Datentypen verwenden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: lopey
Datum: 07.05.17 08:31

Hallo,

hätte es so probiert:

Dim länger As String = TextBox3.Text
Dim länge As Integer = Integer.Parse(länger)
Dann bekomme ich aber einen System.FormatException wurde nicht behandelt.

Nicht richtig gemacht ? Oder was fehlt jetzt ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: Manfred X
Datum: 07.05.17 09:35

Hallo!

Die "Parse"-Methode versucht eine Umwandlung der Zeichenfolge
in der String-Variable in eine Ganzzahl.
Wenn das nicht klappt, wirft sie eine Ausnahme, der zu entnehmen
ist, was nicht funktioniert hat:
- fehlendes Argument (Null)
- Überlauf des Integertyps (OverFlow)
- Zeichenfolge nicht als Ganzzahl wandelbar (Format)
Die Parse-Methode muß deshalb in einem Try-Catch-Block eingesetzt werden.

Die von mir erwähnte "TryParse"-Methode gibt statt dessen einen
boolschen Wert zurück, dem zu entnehmen ist, ob die Umwandlung möglich war (true).
Es werden keine Ausnahmen geworfen.
Das hat den Vorteil, daß man keinen Try-Catch-Block benötigt.
Dim länge as Integer
if integer.tryparse(textbox3.text, länge) then
'jetzt steht in länge der Integer
else
'die umwandlung hat nicht geklappt
end if

(Die Arbeitsweise dieser Methoden kann durch zusätzliche Parameter noch
spezifiziert werden - siehe Doku).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: effeff
Datum: 07.05.17 20:44

Nicht
Dim länge As Object = TextBox3.Text
, sondern

Dim länge As Integer = TextBox3.Text.Lenght

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: Manfred X
Datum: 07.05.17 21:31

Hallo!

Du meinst, der oben gepostete Code soll die Länge der Zeichenfolge prüfen,
also testen ob zwischen 300 und 2500 Ziffern in die Textbox eingegeben
worden sind? Hmmm, wäre möglich .....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: effeff
Datum: 08.05.17 15:36

Hm... Beim zweiten Hinsehen könnte es auch sein, dass der Wert direkt eingetragen werden soll...

OK, weil Manfred X darauf besteht, dass Integers unbedingt nicht eine Länge von bis zu 2500 Ziffern haben sollten...


Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
 
        Dim laenge As String = TextBox3.Text.ToString
 
        Dim Wert As Integer = Nothing
 
        If Not Integer.TryParse(laenge, Wert) Then
            MessageBox.Show("Es wurde kein sinnvoller Wert eingegeben!")
            TextBox3.Focus
            Exit Sub
        End If
 
        Select Case Wert
            Case Is < 300
                MessageBox.Show("Geben Sie bitte einen Wert >=300 ein!")
            Case Is >= 300, Is <= 2500
                TextBox4.Focus()
            Case Is > 2500
                MessageBox.Show("Geben Sie bitte einen Wert <=2500 ein!")
        End Select
 
    End Sub
 
    Private Sub TextBox3_KeyPress(sender As Object, e As _
      System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
        Select Case Asc(e.KeyChar)
            Case 48 To 57, 32
 
            Case Else
                e.Handled = True
        End Select
    End Sub
 
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: InvalidCastException 
Autor: lopey
Datum: 09.05.17 21:22

Hallo,

genau es soll geprüft werden ob der Wert zwischen 300 bis 2500 liegt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel