Inhaltsverzeichnis
Bascom Strings und Bytes
Es taucht öfter die Frage auf, wie man aus Strings einzelne Zeichen als Byte gewinnen kann. Die "MID" Funktion, die sich ja anbieten würde, verlangt für das Ergebnis auch wieder einen String.
Eine Lösung ist die Redefinition des Strings als Byte-Array durch "OVERLAY"
DIM MyString AS STRING * 20 DIM MyArray(21) AS BYTE AT MyString OVERLAY
Man darf daran erinnern, daß String * 20 nicht die Länge 20, sondern 21 hat, denn für die abschließende NULL muß immer ein Platz frei bleiben.
Einzelbytes aus String
DIM MyEinzelByte AS BYTE
DIM MyStrlen AS BYTE
DIM MyIndex AS BYTE
MyString = "Hello, World"
MyStrlen = LEN(MyString)
FOR MyIndex = 1 TO MyStrlen
MyEinzelByte = MyArray(MyIndex)
NEXT
Natürlich kann man auch das Stringende durch die NULL erkennen
DIM MyEinzelByte AS BYTE
DIM MyIndex AS BYTE
MyString = "Hello, World"
FOR MyIndex = 1 TO 21
MyEinzelByte = MyArray(MyIndex)
IF MyEinzelByte = 0 THEN
EXIT FOR
END IF
NEXT
Strings aus Einzelbytes
Besonders beim Terminal-Input über die UART kommt das vor. Die Definition von String und Byte ist gleich
DIM MyEinzelByte AS BYTE
DIM MyIndex AS BYTE
MyIndex = 1
DO
MyEinzelByte = INKEY()
IF MyEinzelByte <> 0 THEN
IF MyEinzelByte = 13 THEN
MyArray(MyIndex) = 0
EXIT DO
ELSE
MyArray(MyIndex) = MyEinzelByte
INCR MyIndex
END IF
END IF
LOOP
PRINT MyString
Autor
Siehe auch