ASC

Die BASIC-Funktion ASC() ermittelt den PETSCII-Code des ersten Zeichens der Zeichenkette (String) als Zahl von 0 bis 255.

Ist das Argument keine Zeichenkette, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Fehlt das Argument oder sind zu viele angegeben, erscheint ?SYNTAX ERROR.

Wenn das zu prüfende Argument ein Nullstring ist (leere Zeichenkette), gibt BASIC immer die Fehlermeldung ?ILLEGAL QUANTITY ERROR aus.

Für die Rückumwandlung, also ASCII-Code-Zahl in ein Zeichen, ist die BASIC-Funktion CHR$() zuständig.

Beispiele

Einfache

PRINT ASC("A")          Auf dem Bildschirm wird 65 ausgegeben.
PRINT ASC("ABC")        Auf dem Bildschirm wird ebenfalls 65 ausgegeben.
PRINT ASC("" + CHR$(0)) Auf den Bildschirm wird eine 0 ausgegeben.
PRINT ASC("")           "?ILLEGAL QUANTITY ERROR" wird ausgegeben (Erklärung siehe oben).

Sequenzielle Datei byteweise lesen

10 Z$=CHR$(0)
 100 OPEN 2,8,3,"FILENAME,S,R"
 110 FOR S=-1 TO 0
 120 GET#2,A$
 130 A=ASC(A$+Z$)
 140 S=ST=0
 150 PRINT A;
 160 NEXT S
 170 CLOSE 2
 ...

Das Verhalten von GET# muss besonders behandelt werden. Es liefert bei einem gelesenen CHR$(0) eine leere Zeichenkette! Daher:

  • Ist A$ leer, erhält man durch die Addition mit Z$ (entspricht CHR$(0)) die gewünschte Zeichenkette CHR$(0).
  • Ist A$ nicht leer, stört die Zeichenketten-Addition nicht, da ASC() nur das erste Zeichen verwendet.

Es empfiehlt sich CHR$(0) in eine Variable abzulegen, da damit das Programm schneller abgearbeitet wird und Platz spart. Die FOR-NEXT-Schleife bricht ab, wenn ST ungleich 0 ist (also bei einem Fehler oder Dateiende), was logisch dann 0 ergibt (und die Schleife beendet), andernfalls wird (ST=0) wahr, was -1 entspricht und die Schleife weiterführt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert