Hi,
ich trau mich fast nicht diese Frage hier zu stellen. Sie könnte mit einem "na das ist doch vollkommen trivial" beantwortet werden.
Aber ich komm halt nicht drauf.
Ich habe eine TextFeld, nennen wird es
Dieses Feld kann jeden Schrott enthalten ... und ich möchte nun wissen, ob das eine (nicht-negative) ganze Zahl ist.
Mir fallen da zwei Techniken ein:
Zunächst mal lehne ich alle Leereingaben ab:
Und dann versuche ich einen Cint()
Das ist natürlich NICHT zielführend ... denn für die Eingabe 1,7 wird gerundet und man erhält 2. Allerdings wird für 1.002 die Zahl 1002 zurückgeliefert, was ja auch richtig ist.
Die zweite Idee:
Diese Lösung wird Komma Zahlen nicht zulassen. Und damit gibt es keine Rundungsfehler.
Allerdings die Eingabe 1.002 führt zu einem Fehler, weil auch der Punkt abgewiesen wird.
Beide Lösungen tun also nicht das was ich möchte.
Man könnte IsNumeric verwenden:
Da wird alles erkannt ... 1,7 .... 2.009 .... -20 .... etc.
Aber ich muss dan halt noch anschließend prüfen ob es eine Ganzzahl ist .. also etwa mit int() abschneiden und dann auf Gleichheit prüfen ...
Im Internet finde ich jede Menge Lösungsvorschläge ... aber so richtig überzeugt mich keine Lösung.
Händisch könnte man das auch prüfen:
Komma enthalten --> Eingabe ungülitig
führendes + Zeichen 'entfernen
Leerzeichen am Begin und Ende entrfernen (Trim)
Alle Punkte entfernen
Nullstring ---> Eingabe üngültig
Prüfen ob nur Ziffern von 0 - 9 vorkommen --> Eingabe ungülitg
---> Eingabe gültig
Das kann man machen ... es klingt für mich aber ziemlich umständlich. Zumal man ja streng genommen noch die decimal culture beachten müsste, also ob ein Dezimal Komma oder ein Dezimal Punkt verwednet wird !
Gibt es denn für so eine Standard Anforderung keine bessere Lösung ?
LG
Peter
ich trau mich fast nicht diese Frage hier zu stellen. Sie könnte mit einem "na das ist doch vollkommen trivial" beantwortet werden.
Aber ich komm halt nicht drauf.
Ich habe eine TextFeld, nennen wird es
TextBox1
Dieses Feld kann jeden Schrott enthalten ... und ich möchte nun wissen, ob das eine (nicht-negative) ganze Zahl ist.
Mir fallen da zwei Techniken ein:
Zunächst mal lehne ich alle Leereingaben ab:
Und dann versuche ich einen Cint()
Das ist natürlich NICHT zielführend ... denn für die Eingabe 1,7 wird gerundet und man erhält 2. Allerdings wird für 1.002 die Zahl 1002 zurückgeliefert, was ja auch richtig ist.
Die zweite Idee:
Diese Lösung wird Komma Zahlen nicht zulassen. Und damit gibt es keine Rundungsfehler.
Allerdings die Eingabe 1.002 führt zu einem Fehler, weil auch der Punkt abgewiesen wird.
Beide Lösungen tun also nicht das was ich möchte.
Man könnte IsNumeric verwenden:
Da wird alles erkannt ... 1,7 .... 2.009 .... -20 .... etc.
Aber ich muss dan halt noch anschließend prüfen ob es eine Ganzzahl ist .. also etwa mit int() abschneiden und dann auf Gleichheit prüfen ...
Im Internet finde ich jede Menge Lösungsvorschläge ... aber so richtig überzeugt mich keine Lösung.
Händisch könnte man das auch prüfen:
Komma enthalten --> Eingabe ungülitig
führendes + Zeichen 'entfernen
Leerzeichen am Begin und Ende entrfernen (Trim)
Alle Punkte entfernen
Nullstring ---> Eingabe üngültig
Prüfen ob nur Ziffern von 0 - 9 vorkommen --> Eingabe ungülitg
---> Eingabe gültig
Das kann man machen ... es klingt für mich aber ziemlich umständlich. Zumal man ja streng genommen noch die decimal culture beachten müsste, also ob ein Dezimal Komma oder ein Dezimal Punkt verwednet wird !
Gibt es denn für so eine Standard Anforderung keine bessere Lösung ?
LG
Peter
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Peter329“ ()