FETCH (TSB)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
FETCH (TSB)
Format: FETCH <string>, <len>, <variable>
Parameter
string: enthält die zulässigen Tasten
len: Höchstlänge der Eingabe
variable: Variable, der die Eingabe zugewiesen wird
Einordnung
Typ: Anweisung
Kontext: Eingabe
Aufgabe: kontrollierte Eingabe
Abkürzung: fE
Verwandte Befehle
keine


Dieser Artikel beschreibt das Schlüsselwort FETCH (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls FETCH.

Typ: Anweisung 
Syntax: FETCH <string>, <len>, <variable>

Die Anweisung FETCH ist eine gelungene Kombination aus GET und INPUT. Bei GET hat man die Möglichkeit, vom Programm aus zu überwachen, welche Zeichen eingegeben werden dürfen und wie viele. INPUT weist Eingaben vorher festgelegten Variablen zu. FETCH bietet beides zugleich, man kann kontrollieren, welche und wie viele Zeichen eingetippt werden, und diese werden komfortabel vom Befehl direkt einer gewünschten Variablen zugewiesen.

In <string> wird abgelegt, welche Tasten während der Eingabe erlaubt sein sollen, <len> definiert die Höchstlänge der Eingabe und in <variable> wird das Ergebnis abgelegt. Um Platz zu sparen, gibt es drei Sonderzeichen, die jeweils für einen ganzen Bereich zulässiger Zeichen stehen. "{home}" oder CHR$(19) steht für alle Kleinbuchstaben (im Klein-Groß-Modus), "{crsr down}" oder CHR$(17) steht für alle Ziffern und Satzzeichen einschließlich "@", und "{crsr right}" oder CHR$(29) steht für alle Klein- und Großbuchstaben. Diese drei Sonderzeichen sind beliebig mit anderen Tasten kombinierbar, z.B. hätte man mit "{crsr right}0123456789 ." alle Buchstaben, die Ziffern, Punkt und Leertaste als zulässig ausgewählt.

Da intern das INPUT des C64-Kernals verwendet wird, führt das Zulassen des Zeichens "," (Komma) unweigerlich zur Fehlermeldung ?EXTRA IGNORED, wenn es verwendet wird (das Komma trennt bei INPUT die Werte zweier Variablen voneinander, was bei FETCH aber nicht vorgesehen ist). Auch ?REDO FROM START kann vorkommen, wenn der gewählte Variablentyp nicht mit der Eingabe übereinstimmt. Es ist in TSB möglich, gar kein Zeichen einzugeben (und nur die RETURN-Taste zu drücken), was bei der Ergebniszuweisung den Wert der bei FETCH verwendeten Variable so belässt wie vor dem Aufruf von FETCH.

Bei Erreichen der maximalen Eingabelänge verschwindet der Eingabe-Cursor. Man kann jedoch die schon getippten Zeichen auch jetzt noch löschen. Erst die RETURN-Taste macht eine Eingabe endgültig.

Beispiel:

10020 PRINT "Beenden (b)? Fortsetzen (f)? ";: FETCH "fb",1,x$: PRINT
10030 IF x$ = "b" THEN PRINT: PRINT "Abbruch nach Fehler!": STOP

Bietet einen Dialog, auf den mit einem einzigen Auswahlzeichen ("f" oder "b") reagiert werden soll.