| |
VB.NET - Ein- und UmsteigerInvalidCastException | | | 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 | |
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. | |
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 ? | |
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). | |
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 | |
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 ..... | |
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. | |
| 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 |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
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
|
|