home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* DFFUNK.INC *)
- (* Modul zur Definition von Funktionstasten *)
-
- OVERLAY PROCEDURE Funktionstasten;
-
- CONST BACKSPACE = #8; (* <--- Muss ggf. angepasst werden. Auf manchen *)
- (* Rechner hat das Zeichen fuer den Rueck- *)
- (* waertsschritt die Nummer 127 . *)
-
- VAR i, Zeichenzaehler : INTEGER;
- Wahl, Zeichen : CHAR;
- Name, String1 : String255;
- Fehler : BOOLEAN;
- f : FILE OF FunkStr;
-
-
- BEGIN
- ClearKeyBuf;
- ClrScr;
- WriteLn(inv_ein,'FUNKTIONSTASTEN',inv_aus);
- WriteLn;
- WriteLn('Sie koennen 6 Funktionstasten belegen (Ctrl-A .. Ctrl-F)');
- WriteLn('Erlaubt sind alle alphanumerischen Zeichen. ');
- WriteLn('BACKSPACE (Ctrl-H) loescht das zuletzt eingegebene Zeichen.');
- WriteLn('ENTER schliesst eine Zeile ab.');
- WriteLn('Jeder String darf max. 40 Zeichen haben.');
- WriteLn; WriteLn; WriteLn;
-
- (* Funktionstasten aus einer Datei einlesen *)
- REPEAT
- Write(' Funktionstastendefinition aus Datei einlesen ? (j/n) ');
- ReadLn(Wahl)
- UNTIL Wahl IN ['j','J','n','N'];
- IF Wahl IN ['j','J'] THEN BEGIN
- Fehler := TRUE;
- REPEAT
- Write(' Name der Datei (Abbruch mit leerer Eingabe) : ');
- ReadLn(Name);
- IF Length(Name) > 0 THEN BEGIN
- Assign(f,Name);
- (*$I-*)
- ReSet(f);
- (*$I+*)
- Fehler := IOFehler
- END
- UNTIL (NOT Fehler) OR (Length(Name) = 0);
- IF NOT Fehler THEN BEGIN
- FOR i := 1 TO 6 DO
- Read(f,FunkText[i]);
- Close(f)
- END
- END;
-
- (* Funktionstasten definieren *)
- IF (Length(Name) = 0) OR Fehler OR (Wahl IN ['n','N']) THEN BEGIN
- FOR i := 1 TO 6 DO BEGIN
- String1 := '';
- GotoXY(2,12 + i);
- Zeichenzaehler := 0;
- Write('Funktionstaste Ctrl-',Chr(Pred(i) + Ord('A')):1,' --> ');
- GotoXY(28,12 + i);
- REPEAT
- GotoXY(50,1); (* Oben rechts Zeichenzaehlerstand ausgeben *)
- Write('Zeichen insg.: ',Zeichenzaehler:3);
- GotoXY(28 + Zeichenzaehler,13 + i);
- REPEAT
- Zeichen := GetKey
- UNTIL Zeichen IN [BACKSPACE,' '..'~',RETURN];
- IF Zeichen = BACKSPACE THEN (* Hinterstes Zeichen loeschen *)
- IF Length(String1) > 0 THEN BEGIN
- String1 := Copy(String1, 1, Pred(Length(String1)));
- Zeichenzaehler := Pred(Zeichenzaehler)
- END;
- IF Zeichen IN [' '..'~'] THEN BEGIN (* Ein Zeichen anhaengen *)
- String1 := Concat(String1,Zeichen);
- Zeichenzaehler := Succ(Zeichenzaehler)
- END;
- GotoXY(28,12 + i);
- Write(String1); (* String ausgeben und ggf. *)
- ClrEol (* den Rest bis zum Zeilenende loeschen *)
- UNTIL Zeichen = RETURN;
- FunkText[i] := String1
- END;
-
- (* Funktionstastendefinition abspeichern *)
- GotoXY(1,20);
- REPEAT
- Write(' Funktionstastendefinition abspeichern ? (j/n) ');
- ReadLn(Wahl)
- UNTIL Wahl IN ['j','J','n','N'];
- IF Wahl IN ['j','J'] THEN BEGIN
- Fehler := TRUE;
- REPEAT
- Write(' Name der Datei (Abbruch mit leerer Eingabe) : ');
- ReadLn(Name);
- IF Length(Name) > 0 THEN BEGIN
- Assign(f,Name);
- (*$I-*)
- ReWrite(f);
- (*$I+*)
- Fehler := IOFehler
- END
- UNTIL (NOT Fehler) OR (Length(Name) = 0);
- IF NOT Fehler THEN BEGIN
- FOR i := 1 TO 6 DO
- Write(f,FunkText[i]);
- (*$I-*)
- Close(f);
- (*$I+*)
- Fehler := IOFehler (* Close ist hoffentlich gutgegangen *)
- END
- END
- END
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Ende DFFUNK.INC *)
-