waldbauer.com

waldbauer.com (http://www.waldbauer.com/vb/index.php)
-   SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum (http://www.waldbauer.com/vb/forumdisplay.php?f=57)
-   -   Prüfen ob Eingabe eine Zahl oder ein String ist... (http://www.waldbauer.com/vb/showthread.php?t=2198)

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&" "

Nun möchte ich prüfen, ob t eine ganze Zahl ist oder nicht, dabei sollte berücksichtigt werden, daß t auch manchmal 603 13 sein kann (also mit Space).

Problem:

local int t2 = val(t) führt ggf. zu einer fehlerhaften Benutzereingabe. Logisch. Gibt es ein Bordmittel oder eine OSA dafür ?

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

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

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.

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

Die Funktion RIGHT meinst du wirklich ??? Wie soll das gehen ?!

Sorry,
hab's gerade getestet: Geht nur mit "TextString", nicht mit val()

Eine Idee habe ich noch.

Wie bekomme ich einen String in Kombination mit val() z. B. mit € hin.

a = val(t) & "€"

geht leider nicht

local str a = string(val(t)&"€"))

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 SCREEN

val(t) liefert bei Textstring ein 0,00000, so dass ich mit IF-Anweisung den Textstring herausziehe.

Eine Dezimalzahl liefert mit RIGHT so nun die Nachkommastellen.
Hast Du 00000, hast Du eine GANZZAHL.

Gruß Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.