Alle Programme, die wir Ihnen bisher vorgestellt haben, besitzen einen großen Nachteil: Sie ermöglichen es nur, auf einzelne Tastendrücke zu reagieren. In vielen Fällen wäre es aber nützlich, ganze Zeichenketten , wie z. B. Verzeichnisnamen, eingeben zu können. Wir zeigen Ihnen, wie Sie das recht komfortabel bewerkstelligen können.
Mit INPUT.DEB können Sie die Eingabe einer beliebigen Zeichenkette anfordern, wobei sich zusätzlich ein Text vorgeben läßt, den nur noch bestätigt oder geändert zu werden braucht. Dabei lassen sich Ihre Eingaben mit den Richtungstasten (Cursor links und rechts) editieren. Sie können mit [Pos1] und [Ende] an den Anfang oder das Ende der Eingabe springen, per Tastenkombination [Strg] + [Ende] den Rest bis zum Zeilenende löschen und mit [Backspace] oder [Entf] wie gewohnt löschen. »Normale« Eingaben, also Buchstaben oder Ziffer werden in den Text eingefügt, störende Steuerzeichen werden vorsorglich unterdrückt. Nach dem Beenden der Eingabe mit [Return] gibt INPUT den Text auf die Standardausgabe aus, die Sie vom Bildschirm grundsätzlich in eine Datei umleiten sollten.
Ausgeklügelte Kombinationen mit speziellen Filtern (siehe Kapitel »Ohne Filter extra…«) erlauben die Zerlegung oder Ausrichtung der Eingabe nach den verschiedensten Kriterien – und wenn es nur mit UPPER.DEB eine Umwandlung in Großbuchstaben ist. INDEMO.BAT zeigt Ihnen eine typische Anwendung von INPUT.DEB, die z. B. für ein Installationsprogramm wahlweise die Angabe eines ansonsten erst einzugebenden Verzeichnisses bereits als Parameter erlaubt:
@ECHO OFF IF NOT "%1"=="" GOTO WEITER SAY INDEMO >TMP.BAT SAY Verzeichnis= INPUT C:\WORD>>TMP.BAT ECHO. TMP :WEITER IF EXIST TMP.BAT DEL TMP.BAT SAY Ist das Verzeichnis %1 in Ordnung? (J/N) ASK JjNn ECHO. IF ERRORLEVEL 3 INDEMO ECHO Das Programm wird im Verzeichnis %1 installiert...
Mit einem kleinen Trick können Sie nun endlich auch beliebige Texteingaben in Systemvariablen vornehmen! Unser nächstes Beispiel zeigt Ihnen, wie das geht:
SAY SET PATH=> TMP.BAT SAY Neuer Pfad: INPUT %PATH%» TMP.BAT CALL TMP.BAT DEL TMP.BAT
Name: | INPUT.DEB |
Funktion: | Nimmt eine Texteingabe entgegen und gibt sie auf der Standardausgabe aus. |
Übersetzung: | DEBUG <INPUT.DEB |
Prüfsumme: | A7A8 |
Anwendung: | INPUT [Text] >DateiText: in der Eingabezeile eventuell vorgegebener Text
Datei: Erhält die die Texteingabe |
Einschränkungen: | Die Textlänge ist auf 64 Zeichen beschränkt. Funktions- und Sondertasten besitzen nicht ihre gewohnte Funktion. |
A MOV BX,2 ;100 MOV BP,[80] ;103 SUB BP,2001 ;107 JNB 10F ;10B XOR BP,BP ;10D XOR SI,SI ;10F MOV DI,BP ;111 CALL 14B ;113 MOV AH,8 ;116 INT 21 ;118 CMP AL,8 ;11A JNZ 129 ;11C LEA DI,[SI-1] ;11E CALL 14B ;121 CALL 1BC ;124 JMP 116 ;127 CMP AL,1B ;129 JNZ 13F ;12B XOR DI,DI ;12D CALL 14B ;12F MOV DI,SI ;132 XCHG BP,DI ;134 CMP SI,DI ;136 JZ 111 ;138 CALL 1A8 ;13A JMP 136 ;13D CMP AL,D ;13F JNZ 163 ;141 CALL 149 ;143 XOR SI,SI ;146 DEC BX ;148 MOV DI,BP ;149 CMP DI,BP ;14B JA 1BB ;14D CMP SI,DI ;14F JZ 1BB ;151 MOV AL,[SI+82] ;153 JB 15E ;157 MOV AL,8 ;159 SUB SI,2 ;15B CALL 1AA ;15E JMP 14B ;161 CMP AL,0 ;163 JNZ 18D ;165 MOV AH,8 ;167 INT 21 ;169 CMP AL,4F ;16B JZ 111 ;16D CMP AL,53 ;16F JZ 124 ;171 CMP AL,75 ;173 JZ 132 ;175 XOR DI,DI ;177 CMP AL,47 ;179 JZ 113 ;17B LEA DI,[SI-1] ;17D CMP AL,4B ;180 JZ 113 ;182 ADD DI,2 ;184 CMP AL,4D ;187 JZ 113 ;189 JMP 116 ;18B CMP AL,20 ;18D JB 116 ;18F CMP BP,40 ;191 JNB 18B ;194 LEA DI,[SI+1] ;196 CALL 1AA ;199 XCHG AL,[SI+81] ;19C CMP SI,BP ;1A0 JBE 199 ;1A2 INC BP ;1A4 JMP ne 113 ;1A5 MOV AL,20 ;1A8 INC SI ;1AA MOV [80],AL ;1AB MOV CX,1 ;1AE MOV DX,80 ;1B1 MOV AH,40 ;1B4 INT 21 ;1B6 MOV AL,[80] ;1B8 RET ;1BB CMP SI,BP ;1BC JZ 1BB ;1BE MOV DI,SI ;1C0 DEC BP ;1C2 CMP SI,BP ;1C3 JZ 1D4 ;1C5 MOV AL,[SI+83] ;1C7 MOV [SI+82],AL ;1CB CALL 1AA ;1CF JMP 1C3 ;1D2 CALL 1A8 ;1D4 JMP ne 14B ;1D7 RCX DA NINPUT.COM W Q
Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot