|
|
#1 |
|
Entwickler
|
Prüfen ob Eingabe eine Zahl oder ein String ist...
Guten Morgen Leute !
Ich möchte gerne folgende Eingabe prüfen: Code:
local str t="" local str t9="" t=""; t9="" get t uppercase blank numbers chars '+.&-ß!/';t9=t&" " Problem: local int t2 = val(t) führt ggf. zu einer fehlerhaften Benutzereingabe. Logisch. Gibt es ein Bordmittel oder eine OSA dafür ? |
|
|
|
|
|
#2 |
|
Registrierter Benutzer
|
Hallo Günter,
habe gerade mal meine OSA-Tabelle durchgesehen. Dabei bin ich auf ASC und DIVIDE gestoßen. Wird vermutlich nicht das sein, was Du brauchst, habe aber einen Gedanken, den Du vielleicht mal selbst überlegen kannst. Ist es nicht möglich eine Abfrage in etwa so zu gestalten, dass Du t:1 rechnen lässt. Ergibt t:1 = t hast Du eine Ganzzahl Gruß Rainer |
|
|
|
|
|
#3 |
|
Entwickler
|
Das Problem beginnt aber nicht bei der Abfrage, sondern bereits beim Versuch den Wert von t zu ermitteln. Also local int t2 = val(t) ergibt "Fehlerhafte Benutzerdaten"
Ich suche daher eine Möglichkeit vor der Abfrage festzustellen, ob t eventuell eine Zahl ist, auch wenn die Variable vorher von mir selbst als STRING definiert wurde. PHP bietet dafür zb. die Funktion is_numeric |
|
|
|
|
|
#4 |
|
Registrierter Benutzer
|
Muss leider gleich weg und auf die schnelle hab ich's nicht mehr so mit der Programmierung.
Was ich dachte: Kannst Du nicht vor val(t) eine Prüfung t:1 einbauen? Was liefert die OA-Programmierung denn wenn man einen String durch 1 dividiert? Dachte dass man auf diesem Weg eine Prüfung vornehmen könnte. |
|
|
|
|
|
#5 |
|
Registrierter Benutzer
|
Hallo Günter,
hast Du dieses Problem schon gelöst? Habe mir nochmal Gedanken gemacht. Nutze ich die Programmierung von OA ergibt val(t) bei mir mit 603 13 = 0,00000 603,13 = 613,13000 60313 = 61313,00000 Folglich müsste man mit der OSA Funktion RIGHT eine Ganzzahl herausgekommen können. Gruß Rainer |
|
|
|
|
|
#6 |
|
Entwickler
|
Die Funktion RIGHT meinst du wirklich ??? Wie soll das gehen ?!
|
|
|
|
|
|
#7 |
|
Registrierter Benutzer
|
Sorry,
hab's gerade getestet: Geht nur mit "TextString", nicht mit val() |
|
|
|
|
|
#8 |
|
Registrierter Benutzer
|
Eine Idee habe ich noch.
Wie bekomme ich einen String in Kombination mit val() z. B. mit € hin. a = val(t) & "€" geht leider nicht |
|
|
|
|
|
#9 |
|
Entwickler
|
local str a = string(val(t)&"€"))
|
|
|
|
|
|
#10 |
|
Registrierter Benutzer
|
Hallo Günter,
ein wohl für Programmierer nicht ganz so optimale Möglichkeit, aber im Ergebnis richtig. Code:
errors off
local window Hilfe = size 40 by 19 at 21,3 framed
pause = TRUE
screen Hilfe
local str t=""
!t="603 13"
!t="603,13"
t="60313"
local int t2 = val(t)
put in Hilfe at 3,3 t2
local str a = string(val(t))
put in Hilfe at 3,5 a
IF a = "0,00000" put in Hilfe at 3,6 "TEXT"
ELSE
attach 'string'
b = call('RIGHT' ,a,5)
put in Hilfe at 3,7 b
detach 'string'
IF b = "00000"
put in Hilfe at 3,8 "GANZZAHL"
END IF
END IF
GET pause
pause END
END SCREENEine Dezimalzahl liefert mit RIGHT so nun die Nachkommastellen. Hast Du 00000, hast Du eine GANZZAHL. Gruß Rainer |
|
|
|
Antwort schreiben... |
| Themen-Optionen | Thema durchsuchen |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Nützliche Tips (Ergänzungen zum Handbuch von Heinz Richartz) | waldbauer.com | SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum | 204 | 08.11.2012 14:11 |