GET(Raute)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. GET (Begriffsklärung).


GET(Raute)
Format: GET#<logische Dateinummer>, <Variable>[, <Variable>...]
Parameter
<logische Dateinummer>: Nummer eines zum Lesen geöffneten Datenkanals
<Variable>: Variable beliebigen Typs zur Übernahme des eingelesenen Zeichens
Einordnung
Typ: Anweisung
Kontext: Ein/Ausgabe
Aufgabe: Einzelne Zeichen von einem Eingabekanal lesen
Abkürzung: -
Verwandte Befehle
GET, INPUT, INPUT#

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl GET# unter BASIC V2 des Commodore 64.

Der BASIC-Befehl GET# liest ein einzelnes Zeichen aus dem angegebenen Gerät oder der geöffneten Datei ein. Vor der Benutzung des GET#-Befehls muss zwingend das entsprechende Gerät oder die Datei mit dem BASIC-Befehl OPEN geöffnet werden. Dabei muss die gleiche logische Dateinummer genutzt werden wie im OPEN-Befehl.
Das eingelesene Zeichen wird in einer Variable (Zeichenketten-, Fließkomma- oder Ganzzahlvariable) abgelegt. Das Verhalten ist ähnlich dem von GET und weicht nur in Details ab. Handelt es sich um eine Zahlenvariable werden nur Zeichen, die eine Zahl bilden akzeptiert (".", ",", "+", "-", "e"), wobei aber nur die Ziffern 1 bis 9 erkannt werden können, da sonst die Variable 0 immer enthält. Andere Zeichen führen zum Abbruch mit der Fehlermeldung ?SYNTAX ERROR. Um diese Fehlermeldung zu vermeiden, sollte für das Einlesen stets Zeichenkettenvariablen genutzt werden.
Der GET#-Befehl kann nur innerhalb von BASIC-Programmen genutzt werden, ansonsten wird die BASIC-Fehlermeldung ?ILLEGAL DIRECT ERROR ausgegeben.

Es werden beim Einlesen alle Zeichen berücksichtigt. Eine Ausnahme ist die Verwendung des Befehls GET# auf dem Bildschirm. Nach jedem Lesevorgang auf dem Monitor wird der Cursor um eine Spalte nach rechts versetzt und das Ende einer logischen Bildschirmzeile (also nach 80 Zeichen) automatisch das RETURN-Zeichen CHR$(13) gesetzt.

Aus Dateien mittels GET# in Zeichenketten gelesenen Nullbytes entsprechen nicht wie zu erwarten einem CHR$(0), sondern einem Leerstring und müssen gegebenenfalls für die weitere Verwendung (z.B. durch die Funktion ASC) gesondert behandelt werden (siehe Beispiel).

[Bearbeiten] Beispiele

[Bearbeiten] Vom Bildschirm "einlesen"

10 PRINT CHR$(19);: B$="": OPEN 1,3
20 FOR I=1 TO 255
30 GET#1,A$: B$=B$+A$
40 NEXT
50 CLOSE 1
60 PRINT CHR$(147) B$

255 Bildschirmzeichen in einer Zeichenkette speichern.

[Bearbeiten] Von Tastatur ähnlich GET einlesen

100 OPEN 1,0 : REM GERAET 0 = TASTATUR 
110 GET#1,A: IF A=0 GOTO 120
120 PRINT A;
130 GOTO 110

Kann nur Zeichen von 1 bis 9 einlesen! Das Zeichen "0" liefert den gleichen Wert wie bei keiner Eingabe und kann nicht davon unterschieden werden!
Die Zeichen ",", ".", "-", "+", "e" werden ignoriert (bzw. liefern auch 0), alle anderen lassen das Programm mit Fehler ?SYNTAX ERROR abbrechen.

[Bearbeiten] Sequentielle Datei auf Diskette einlesen

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

Die Zeichencodes der Zeichen aus der sequentiellen Datei "DATEN" werden der Reihe nach am Bildschirm ausgegeben. Die FOR-NEXT-Konstruktion sorgt für einen schnellen Programmlauf, da das zeichenweise Einlesen auf BASIC-Ebene ohnehin schon ein recht gemächlicher Vorgang ist.

[Bearbeiten] Weitere Beispiele

Siehe


In anderen Sprachen