FETCH

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen finden sich unter FETCH (Begriffsklärung).
FETCH
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: keine
Verwandte Befehle
keine


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort 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 BASIC 2.0 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. Nach dem Befehl FETCH sollte im Programm ein PRINT stehen, da der Cursor hinter FETCH "stehenbleibt".

Leider kann man nach Erreichen der maximalen Eingabelänge seine bereits eingetippten Zeichen nicht mehr löschen, d.h. man kann z.B. eine getroffene Wahl bei einer Eingabelänge von 1 nicht mehr revidieren. Außerdem bleibt der Eingabe-Cursor hinter dem letzten Zeichen stehen, was u.U. ein Bildschirm-Layout verunstalten kann. Dieses Verhalten macht den Befehl FETCH unbrauchbar für userfreundliche Anwendungen.

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)


Dieser Befehl wurde in TSB um weitere Funktionen erweitert, siehe FETCH (TSB)