Frage von KidBoo, 22

VisualBasic- Ich finde den Fehler nicht(if-Else)?

Hab bei meiner If Else Unterscheidung folgendes Problem:

If  IsNumeric(strZahl1) = False Or strZahl1.Contains(".") Or strZahl1 <= 0 Then

                    MessageBox.Show("Bitte korrigieren sie ihre Eingabe", _
                                    "Fehler!")
                    txtParameter1.Focus()
                    txtParameter1.SelectAll()
End if

Wenn ich es so schreibe, stürtzt das Programm ab wenn ich einen Buchstaben oder den Punkt eingebe, bei einer negativen Zahl kommt die Fehlermeldung.

Es läuft aber wenn ich es so mache, was allerdings wesentlich länger und unnötiger ist:

    If IsNumeric(strZahl1) = False Or strZahl1.Contains(".") Then
                        MessageBox.Show("Bitte korrigieren sie ihre Eingabe", _
                                        "Fehler!")
                        txtParameter1.Focus()
                        txtParameter1.SelectAll()
     ElseIf strZahl1 <= 0 Then
                        MessageBox.Show("Der Wert darf nicht negativ sein!", _
                                        "Fehler!")
                        txtParameter1.Focus()
                        txtParameter1.SelectAll()
End if

Würde gerne wissen wo mein Denkfehler ist, weil das nur ein Auszug aus meinem Programm ist und es alles um einige verkürzen würde wenn ich die erste Variante nehmen könnte.

PS: Benutze Visual Basic 2012

Antwort
von maximilianus7, 16

also mit isNumeric hast du voll ins klo gegriffen. MS hat mit seinem konzept Internationalization (I18N) ganz schön was abgedrückt und vergessen zu ziehen.

einfache regel: isNumeric  ist unbrauchbar

ein ersatz hier: http://pastie.org/10555022 - als dezimaltrenner wird nur "." akzeptiert.

nicht ganz klar ist, ob du jetzt eine ganze zahl willst - wegen der abfrage nach "." - oder nur das komma als dezimalzeichen.


Antwort
von David3103, 22

Wenn ich es richtig interpretiere, willst du einfach nur eine Zahl von Benutzer haben. Du kannst dir den ganzen Code sparen und Statt der Textbox einfach NumericUpDown für die Abfrage verwenden.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten