Forum: Mikrocontroller und Digitale Elektronik Bascom Stringprüfung - Zeichen prüfen, ob es eine Zahl ist


von Tilmann (Gast)


Lesenswert?

Hallo,

ich möchte einen empfangenen String gern zeichenweise prüfen.
Dabei möchte ich z.B. wissen, ob die dritte Stelle eine Zahl ist.

Ich hätte gedacht, dazu prüfe ich, ob es im ASCII-Code zwischen 48 (für 
Null) und 57 (für 9) liegt.
Der Compiler findet mein if-Statement aber doof ("invalid data type" - 
keine Ahnung, was er damit meint).

Code ausschnittweise:


Dim eingangsstring as String * 15
Dim Dritte As String * 1
Dim Dritte_ist_zahl as Bit


Dritte = Mid(eingangsstring , 3 , 1)

If Dritte > 47 and Dritte < 57 Then
                     Dritte_ist_zahl = 1
                  End If

Hat jemand eine Idee ?

Gruß Tilmann

von Karl H. (kbuchegg)


Lesenswert?

Auch wenn du in 'Dritte' einen String der Länge 1 erzeugt hast, ist es 
immer noch ein String. Und für einen String macht es nun mal keinen Sinn 
mit einer Zahl verglichen zu werden. Das eine ist eine Zeichenkette 
(auch wenn die nur 1 Zeichen lang ist) und das andere ist eine Zahl.

Richte dein Augenmerk in der BASCOM Hilfe mal auf die Funktion ASC

von Tilmann (Gast)


Lesenswert?

Hallo,

habe es selbst herausgefunden. Und zwar mittels Overlay.

Da geil erklärt:
[[http://www.rn-wissen.de/index.php/Bascom_Strings_und_Bytes]]


Dim eingangsstring_byte(16) As Byte At eingangsstring Overlay


If eingangsstring_byte(3) > 47 And eingangsstring_byte(3) < 57 Then
                     Dritte_ist_zahl = 1
                  End If

Scheint zu gehen, jedenfalls compiliert es.
___________________________________________________________
Nach dieser Erklärung habe ich "Overlay" verstanden:

"Was auch gut geht ist, zwei Arrays anzulegen mit der gleichen Adresse
(Overlay). Dann kannst Du z.B. einen String und ein Byte-Array
"aufeinanderlegen". Wenn Du dann auf ein Zeichen im String zugreifst,
hast Du ein "A" und wenn Du die gleiche Stelle als Byte liest, hast
Du 65.

Also:
DIM EinString as String * 10
DIM EinPaarByte(10) as Byte at EinString Overlay"
___________________________________________________________
Gruß Tilmann

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.