Bascom Stringprüfung - Zeichen prüfen, ob es eine Zahl ist

Gast #3157245
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
#3157249
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
Gast #3157257
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.