Leichte Eingabe
Die Benutzerfreundlichkeit eines Programmes hängt von der Behandlung der Eingabe beziehungsweise Fehleingabe ab. Dieses Programm beseitigt viele damit verbundene Probleme.
Das aufgeführte Programm (Listing 1) 2, das eine echte Hilfe beim Erstellen von benutzerfreundlichen Programmen darstellt, ist eine Basic-Eingaberoutine, das heißt, es ist in Basic geschrieben und ersetzt den normalen INPUT-Befehl.
Es ist in der Handhabung sehr einfach gehalten und dabei noch recht kurz.
Der Benutzer muß dabei nur IN$ und LT vorbesetzen (siehe Variablenliste). In der Routine wird als erstes IN$ ausgegeben. Dies hat den Vorteil, daß Standardantworten vorgegeben werden können. Danach werden die für die Darstellung des Cursors notwendigen Variablen vorbesetzt.
Dann wartet die Routine auf die Eingabe eines Zeichens. Der Cursor wird währenddessen dadurch simuliert, daß ein Leerzeichen laufend invertiert wird.
Komfortabler als »INPUT«
Nachdem ein Zeichen eingegeben wurde, wird zuerst geprüft, ob überhaupt noch Zeichen angenommen werden dürfen. Ist dies der Fall, wird untersucht, ob das Zeichen ein Steuerzeichen ist.
Falls es keins ist, wird das Zeichen ausgegeben und an den Übergabestring angehängt. Dann wird das Hochkommaflag zurückgesetzt, um weiterhin eine vernünftige Eingabe zu gewährleisten.
Falls das eingegebene Zeichen ein Steuerzeichen ist, gibt es nur vier Möglichkeiten:
- Es ist ein »RETURN«, dann ist die Eingabe beendet
- Es ist ein »DELete«, dann wird der Übergabestring um ein Zeichen vermindert
- Es ist ein »SHIFT RETURN«, dann wird der gesamte String gelöscht, und der Cursor an den Anfang des Eingabefeldes positioniert.
- Es ist ein anderes Steuerzeichen, dann wird es ignoriert
Bei den Punkten 1. bis 3. wird auch noch getestet, ob überhaupt schon ein Zeichen eingegeben wurde. Ist dies nicht der Fall, dann haben auch diese drei Steuerzeichen keine Wirkung.
(Willi Burmeister/rg)IN$ | Übergabevariable für den einzulesenden String |
LT | maximale Länge des einzulesenden Strings |
ZT | Hilfsvariable zur Simulation des Cursors |
ZC | Hilfsvariable zur Simulation des Cursors |
ZL | aktuelle Länge des einzulesenden Strings |
ZS$ | zuletzt gelesenes Zeichen |
Z | ASCII-Code des gelesenen Zeichens und Laufvariable |
10 rem *************************** 12 rem"* * 14 rem"* Willi Burmeister * 16 rem"* * 18 rem"* Holzkrugweg 30 * 22 rem"* 2390 Flensburg * 24 rem"* * 26 rem"* Tel.: 0461/92164 * 28 rem"* * 30 rem"* Basic - * 32 rem"* Eingaberoutine * 34 rem"* * 36 rem"*************************** 40 goto 1000 50 rem *************************** 60 rem * begin der routine * 70 rem *************************** 100 print in$; : zt=ti : zc=4 : if (lt<1) then lt=1 110 get z$ : if z$<>"" then 140 120 if (zt<=ti) then print mid$(" {up}{down}{rvon} {rvof}",zc,3);"{left}"; : zc=5-zc : zt=ti+25 130 goto 110 140 z=asc(z$) : zl=len(in$) 150 if (zl<lt) and ((z and 127)>31) then in$=in$+z$ : print z$; : poke 212,0 : goto 110 160 print" {left}"; 170 if (z=13) and (zl>0) then return 180 if (z=20) and (zl>0) then in$=left$(in$,zl-1) : print "{left}"; : goto110 190 if (z=141) and (zl>0) then for z=1 to zl : print "{left} {left}"; : next : in$="" 200 goto 110 210 rem *************************** 220 rem * ende der routine * 230 rem *************************** 1000 print"{clr}" 1010 print"Basic-Eingaberoutine Beispiel" 1020 print : print 1030 in$="Vorbesetzung" : lt=15 1040 gosub 100 1050 print "{down}{down}" : print in$