isnummeric
Übersicht

![]() |
PebenderBetreff: isnummeric |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
in manchen Basicdialekten, gibt es den Befehl isnummeric, damit kann man prüfen, ob im Text nur Zahlen sind. Wie kann ich denn in Bmax so einen Test machen?? mfg |
||
BMax & MaxGUI |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ich glaube nicht dass es diese Funktion in Bmax gibt, bin mir jedoch nicht ganz sicher. Aber selber so eine Funktion zu schreiben, sollte nicht allzu schwer sein. Zeichen für Zeichen durchgehen. Sobald du auf ein Zeichen triffst, das nicht einen ASCII-Wert zwischen 48 (0) und 57 (9) hat, kannst du False zurückgeben. Nachdem alle Zeichen durch sind und nie False zurückgegeben wurde, kannst du am Ende True zurückgeben. Optional kannst du auch den Dezimalpunkt mit dem ASCII-Wert 46 mit einbeziehen. |
||
![]() |
Pebender |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke.
Ich wollte das ganze mit keydown () probieren, wobei mit ASCII... Könnte simpler sein. Mfg |
||
BMax & MaxGUI |
![]() |
Pebender |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke.
Ich wollte das ganze mit keydown () probieren, wobei mit ASCII... Könnte simpler sein. Mfg |
||
BMax & MaxGUI |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Edit: Gschmarre, hab Mist gepostet ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] Function isnumeric:Int(str:String,checkforPoint:Int=False) |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Grenzfall, dass von Anfang an ein leerer String eingegeben wird, müsste ggf. noch abgedeckt werden. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Pebender |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry, ich weiß ich stell mich blöd an, aber wie kann ich damit ein Textfeld prüfen, damit nur Zahlen drin sind, und bei anderen Zeichen eine Fehlermeldung kommt ??
mfg |
||
BMax & MaxGUI |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du ließt das Textfeld aus, wirfst den Inhalt in die Funktion und prüftst den Rückgabewert. Wenn nur die Zahlen von 0-9 drinne waren, gibt die Funktion true zurück. Ansonsten kannst du eine Fehlermeldung ausgeben, eine Exception werfen oder was auch immer. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich finde BladeRunners Funktion echt interessant implementiert. Und zwar deswegen, weil ich sie nie so geschrieben hätte.
Wenn du die Funktion sehr oft ausführst, ist es vielleicht performanter sie anders zu schreiben, weil in BRs Code der String vielfach durchgelaufen wird und neue String-Objekte erstellt werden. Mein Code sähe so aus (ist allerdings ungetestet): BlitzMax: [AUSKLAPPEN] Function isnumeric(str$, checkforpoint=False) |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Indeed, dein Ansatz ist deutlich performance optimierter. Allerdings: wie oft wird diese Funktion im realen Betrieb aufgerufen? Wenn die Software selbst halbwegs brauchbar geschustert ist in der Regel wohl nur wenn eine Eingabe abgeschlossen wurde (oder, worst case, wenn ein neuer Tastendruck vorliegt). Solange man nicht seitenweise Text damit prüft sollte also auch der "unperformante" Ansatz genügen.
Xeres: You're right, allerdings erlaubt die Funktion in der derzeitigen Version weitere Eingaben auch beim Leerstring, da sie mit einem True aussteigt und somit nicht fälschlicherweise (und doch irgendwo korrekt) einen nicht numerischen String meldet. Der Leerstring ist ja ... weder numerisch noch nicht numerisch. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Fremen59 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab die pograme eingegebn und getested, bei den pogram von BladeRunner wird auch "...." als numerik erkant | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt. Das abzufangen ist aber nicht sonderlich kompliziert. Die Funktion war in 2 Minuten hingesaut, ich erhebe keinen Anspruch auf Perfektion. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group