home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* MAKETAB.PAS *)
- (* Dieses Programm erzeugt die Austauschtabelle *)
- (* (c) 1990 Oliver Hallmann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM MakeTab;
-
- USES Crt;
-
- TYPE
- str10 = STRING [10];
- tab_typ = ARRAY [0..255] OF str10;
-
- VAR
- tab : tab_typ;
- d : FILE OF tab_typ;
-
- PROCEDURE GetStr(VAR s : str10);
- VAR
- c : CHAR;
- scan : BOOLEAN;
- x : BYTE;
- BEGIN
- ClrScr;
- GotoXY(1,2);
- WriteLn('Geben Sie bitten den String ein. ',
- 'Sonderzeichen erreichen Sie, indem');
- WriteLn('Sie die ALT-Taste drücken und den ',
- 'ASCII-Code eingeben. Maximal 10 Zeichen.');
- Write ('Ende mit F10. Löschen mit F5. #0 mit F1! ',
- 'ASCII-Nr. des letzten Zeichens: ');
- s := '';
- REPEAT
- GotoXY(75,4);
- IF Length(s) > 0 THEN
- Write(Ord(s[Length(s)]):3)
- ELSE
- Write('---');
- GotoXY(35,6); ClrEOL; NormVideo;
- FOR x := 1 TO Length(s) DO
- IF s[x] IN [#0..#31, #255] THEN BEGIN
- HighVideo;
- Write('@');
- NormVideo;
- END ELSE
- Write(s[x]);
- REPEAT
- c := ReadKey;
- IF c = #0 THEN BEGIN
- c := ReadKey;
- scan := TRUE
- END ELSE
- scan := FALSE;
- UNTIL (NOT scan) OR
- (scan AND (c IN [#59, #63, #68]));
- IF (scan) AND (c = #63) AND (Length(s) > 0) THEN
- Delete(s, Length(s), 1);
- IF (NOT scan) AND (Length(s) < 10) THEN
- s := s + c;
- IF (scan) AND (c = #59) AND (LENGTH(s) < 10) THEN
- s := s + #0;
- UNTIL (scan) AND (c = #68);
- END;
-
- PROCEDURE SaveTab;
- VAR
- io : INTEGER;
- BEGIN
- Assign(d, 'HPRINT.TAB');
- {$I-}
- REWRITE(d);
- io := IOResult;
- {$I+}
- IF io <> 0 THEN BEGIN
- HighVideo;
- WriteLn('Diskette schreibgeschützt, ',
- 'Programm wird abgebrochen!');
- NormVideo;
- Halt(2);
- END ELSE BEGIN
- Write(d, tab);
- Close(d);
- END;
- END;
-
- PROCEDURE LoadTab;
- VAR
- io : INTEGER;
- x : BYTE;
- BEGIN
- ASSIGN(d, 'HPRINT.TAB');
- {$I-}
- Reset(d);
- io := IOResult;
- {$I+}
- IF io <> 0 THEN BEGIN
- FOR x := 0 TO 255 DO tab[x] := CHAR(x);
- SaveTab;
- END ELSE BEGIN
- Read(d,tab);
- Close(d);
- END;
- END;
-
- PROCEDURE Eingabe;
- VAR
- x : INTEGER;
- c : CHAR;
- nr : STRING[3];
- err : INTEGER;
- a : BYTE;
- BEGIN
- LoadTab;
- REPEAT
- ClrScr;
- WriteLn;
- WriteLn(' 1 : Tabelle löschen');
- WriteLn(' 2 : Zeichen austauschen');
- WriteLn(' 0 : Zurück zum Hauptmenü');
- WriteLn;
- Write ('Ihre Wahl? ');
- REPEAT
- c := ReadKey;
- UNTIL c IN ['1', '2', '0'];
- Write(c);
- CASE c OF
- '1' : BEGIN
- GotoXY(1,7); Write('Wirklich [J/N]? ');
- REPEAT
- c := UpCase(ReadKey);
- UNTIL c IN ['J', 'N'];
- GotoXY(1,7); ClrEOL;
- IF c = 'J' THEN
- FOR x := 0 TO 255 DO tab[x] := CHAR(x);
- END;
- '2' : BEGIN
- REPEAT
- GotoXY(1,7); ClrEOL;
- Write('Welches Zeichen? ');
- ReadLN(nr);
- VAL(nr, x, err);
- UNTIL (err = 0) AND (x IN [0..255]);
- GotoXY(1,7); ClrEOL;
- FOR a:=1 TO Length(tab[x]) DO
- IF tab[x][a] IN [#0..#31, #255] THEN BEGIN
- HighVideo;
- Write('@');
- NormVideo;
- END ELSE
- Write(tab[x][a]);
- WriteLn;
- ClrEOL;
- WriteLn('^^^^^^^^^^ ASCII-Nr.: ', x);
- ClrEOL;
- WRITE('Diesen String löschen [J/N]?');
- REPEAT
- c := UpCase(ReadKey);
- UNTIL c IN ['J', 'N'];
- GotoXY(1,8); ClrEOL;
- GotoXY(1,9); ClrEOL;
- GotoXY(1,7); ClrEOL;
- IF c = 'J' THEN GetStr(tab[x]);
- END;
- END;
- UNTIL c = '0';
- SaveTab;
- END;
-
- BEGIN
- Eingabe;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von MAKETAB.PAS *)