FETCH
FETCH | |
Syntax: | 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 |
Token: | $64 $27 (100 39) |
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 V2 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, dass heißt, 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 unter Umständen ein Bildschirm-Layout verunstalten kann. Ist die Kontrollzeichenkette <string> leer, reagiert Simons' Basic fehlerhaft und erlaubt Eingaben mit unvorhersehbaren Zeichen. Dieses Verhalten macht den Befehl FETCH unbrauchbar für benutzerfreundliche Anwendungen.
Dieser Befehl wurde in TSB um weitere Funktionen erweitert, siehe FETCH (TSB)
Beispiel[Bearbeiten | Quelltext bearbeiten]
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 an, auf den mit einem einzigen Auswahlzeichen ("f" oder "b") reagiert werden soll.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE