| |
VB.NET - Ein- und UmsteigerSelect Case of. If-Anweis. mit Messagebox | | | Autor: theGodfather | Datum: 21.04.19 11:53 |
| Hallo zusammen,
bei folgender Aufgabenstellung habe ich Probleme es zum laufen zu bringen:
1. Sorgen Sie dafür, dass das Programm nicht abbricht, wenn Buchstaben oder zu große Werte eingegeben wurden.
2. Geben Sie in diesem Fall eine AUSSAGEFÄHIGE Fehlermeldung aus
3. Bei mehr als 10 Kindern fragen Sie bitte nach, ob das stimmen kann
Mein code sieht aus wie unten, aber nur der obere Abschnitt passt. Ab dem Case Is > 256 habe ich einen Fehler. Ich weiss dass Byte nur bis 255 funktioniert. Vermutlich daher das Problem. weiteres Problem, dass bei einem String auch keine Fehlermeldung erfolgt.
Private Sub cmdAufgabe4_Click()
Dim bytKinderzahl As Byte 'Dieser Befehl darf nicht geändert werden
bytKinderzahl = Me.txtKinder
Select Case Me.txtKinder
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Exit Sub
Case Is > 10
MsgBox "Sind Sie sicher, dass Ihre Eingabe von " & Me.txtKinder & "" & _
"Kindern korrekt ist?", _vbYesNo, "ACHTUNG!"
Exit Sub
Case Is > 256 'ab hier funktioniert mein Code nicht mehr
MsgBox "Die von Ihnen eingegebene Kinderanzahl ist zu groß!" & vbCr _
& "Korrigieren Sie ihre Eingabe!", vbCritical, "Fehlerhafte" & _
"Eingabe"
Exit Sub
Case Else
MsgBox "" & vbCr & "Korrigieren Sie bitte Ihre Eingabe und geben" & _
"Sie die Anzahl Ihrer Kinder ein.", vbInformation, _
"Fehlerhafte Eingabe"
Exit Sub
End Select Hat jemand eine Idee was ich falsch mache und wie ich es besser machen kann?
Danke im Voraus | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: Manfred X | Datum: 21.04.19 15:20 |
| Hallo!
Welche VB-Version?
Diese Aufgabenstellung müßte genauer erklärt werden.
Rein praktisch gesehen, ist es Unfug, eine Textbox-Eingabe (String)
in eine Byte-Variable zu wandeln.
Die Byte-Variable kann Werte zwischen 0 und 255 aufnehmen, weil die
sich mit einem einzelnen Byte darstellen lassen.
Dim kinder As String = "5"
Dim bytKinder As Byte
If Not Byte.TryParse(kinder, bytKinder) Then
MsgBox("Seltsame Eingabe - Zahl erforderlich (0-255)!")
End If Es sollte statt dessen per Integer.Tryparse eine Überprüfung
auf Ganzzahligkeit der Eingabe stattfinden.
Aber eine Verwendung des Datentyps Byte ist auch möglich, falls
das ausdrücklich verlangt wird. Allerdings wird dieser Typ
gewöhnlich für die Verarbeitung von Folgen von Binärdaten verwendet.
Und danach - irgend so was:
If Integervariable > 10 orelse Integervariable < 0 then
msgbox("unplausible Eingabe (bitte zwischen 0 und 10 eingeben")
End If Schnell hingeschlampt ...
Dim intKinder As Integer
If Not Integer.TryParse(kinder, intKinder) Then
MsgBox("Seltsame Eingabe - positive Ganz-Zahl erforderlich")
End If
Dim r As MsgBoxResult
If (intKinder > 10 OrElse intKinder < 0) Then
r = MsgBox("Bitte Zahl zwischen 0 und 10 eingeben",
MsgBoxStyle.OkCancel Or MsgBoxStyle.Exclamation)
If r = MsgBoxResult.Cancel Or intKinder > 255 Then Exit Sub
End If Alternativ wäre z.B. auch UShort als numerischer Variablentyp nutzbar.
Beitrag wurde zuletzt am 21.04.19 um 15:39:56 editiert. | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: sv00010 | Datum: 21.04.19 18:31 |
| theGodfather schrieb:
Zitat: | | Hallo zusammen,
bytKinderzahl = Me.txtKinder
Select Case Me.txtKinder
| |
Als erstes mal solltst du den TextBox-Inhalt einer String-Variable zuweisen.
Dim strContent_TextBox As String = Me.txtKinder Danach solltest du dann überprüfen, ob der String leer ist.
Mit System.String.IsNullOrEmpty
Wenn der String nicht leer ist, dann mit Microsoft.VisualBasic.Information.IsNumeric überprüfen,
ob der Inhalt überhaupt numerisch ist (also ohne Buchstaben).
Erst danach den Inhalt der TextBox in einen numerischen Typen umwandeln z.B. Byte wie im Code.
Dein Problem ist, dass der Code zwar funktioniert, aber nur weil implizit konvertiert wird.
Für den Anfang geht das, aber schön ist das nicht.
Beitrag wurde zuletzt am 21.04.19 um 18:32:28 editiert. | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: Manfred X | Datum: 21.04.19 19:44 |
| Hallo!
Wieso "Isnumeric"?
Diese Methode testet auf Doublewerte.
Es gibt in "Net" typspezifische Parser. Siehe meinen Beitrag.
(Es könnte allerdings sein, daß der Fragesteller VB6 verwendet.)
Eine Textbox.Text-Eigenschaft enthält bereits einen String.
Insofern ist eine weitere Zuweisung nicht erforderlich.
Die NullorEmpty-Prüfung wird in den Parsern berücksichtigt. | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: theGodfather | Datum: 21.04.19 20:37 |
| Hallo Manfred X und sv00010,
vorab Danke für die schnelle Unterstützung.
Ich versuche über Access VBA Version 7.1 ein Formular mit einem Eingabefeld (mit der Frage nach der Anzahl der Kinder) und einem Button die genannten Befehle zu programmieren.
Dabei muss ich als Hausaufgabe leider bei der Byte-Version bleiben so absurd es auch klingen mag.
d.h
Dim bytKinderzahl As Byte
bytKinderzahl = Me.txtKinder müssen im Code bleiben. | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: Manfred X | Datum: 21.04.19 20:51 |
| Achso VBA - nicht meine Spezialität, aber so sollte es gehen:
Dann kannst Du mit "IsNumeric" zunächst prüfen, ob ein Zahlenwert vorliegt.
Falls ja: Mit der CDbl-Funktion den String in Double wandeln.
Danach muß Du auf >=0 und <= 255 prüfen
Falls ja: Du mußt die Differenz zwischen Fix(Wert) und CDBL(Wert) prüfen
Falls absolute Differenz kleiner 0.00001: Verwende den mit CByte gewandelten FIX-Wert, sonst Abbruch
Falls > 10: Msgbox mit Meldung, ob dieser Wert korrekt ist / Rückgabe auswerten
Beitrag wurde zuletzt am 21.04.19 um 20:57:15 editiert. | |
Re: Select Case of. If-Anweis. mit Messagebox | | | Autor: theGodfather | Datum: 21.04.19 21:08 |
| Danke Manfred,
so klappts | |
| 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 |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|