home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PRTUNIT.PAS *)
- (* Druckersteuerung außerhalb des Sourcecodes *)
- (* (C) 1989 Klaus Leonhardt & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT PrtUnit;
-
- INTERFACE USES Printer;
-
- CONST
- DefFileName = 'PRINTER.DEF';
-
- TYPE
- string50 = STRING[50];
-
- VAR
- pname : STRING[20];
- preset : STRING[20];
- nlq, notnlq : STRING[20];
- underl : STRING[20];
- notunderl : STRING[20];
- gross : STRING[20];
- notgross : STRING[20];
- bold : STRING[20];
- notbold : STRING[20];
- super : STRING[20];
- sub : STRING[20];
- cancelsu : STRING[20];
- linehi : STRING[20];
-
- PROCEDURE ChangePrt(codewort : string50);
- { Code ist Hexcode für Druckereinstellungen }
- { Variablen s.o. enthalten nach korrekter Initialisierung}
- { den Code. Dieser wird der externen ASCII-Datei }
- { PRINTER.DEF entnommen. Ohne PRINTER.DEF wird }
- { pname := 'noname' gesetzt. }
-
- PROCEDURE ChangePrtPlus(codewort : string50; p : BYTE);
- { sendet Printercode und Parameter an den Drucker }
-
- IMPLEMENTATION
-
- VAR
- ok : BOOLEAN;
- deffile : TEXT;
- temp : STRING[50];
- shorttemp : STRING[20];
- i, j : BYTE;
-
- FUNCTION Convert(ch : CHAR) : BYTE;
-
- BEGIN
- ch := UpCase(ch);
- CASE ch OF
- 'A' : Convert := 10;
- 'B' : Convert := 11;
- 'C' : Convert := 12;
- 'D' : Convert := 13;
- 'E' : Convert := 14;
- 'F' : Convert := 15;
- ELSE
- Convert := Ord(ch) - 48;
- END;
- END;
-
- PROCEDURE ChangePrt(codewort : string50);
- TYPE
- setchtyp = SET OF CHAR;
- VAR
- l,i : BYTE;
- code : BYTE;
- ch, hich,
- loch : CHAR;
- setch : setchtyp;
- flag : BOOLEAN;
- BEGIN
- setch := ['0'..'9', 'A'..'F', 'a'..'f'];
- i := 1;
- l := Length(codewort);
- WHILE i < l DO BEGIN
- flag := FALSE;
- REPEAT
- hich := codewort[i];
- Inc(i);
- UNTIL hich IN setch;
- IF ((i< l) AND (hich IN setch)) THEN flag := TRUE;
- loch := codewort[i];
- Inc(i);
- IF loch IN setch THEN BEGIN
- code := 16*Convert(hich) + Convert(loch);
- END ELSE BEGIN
- code := Convert(hich);
- END;
- IF flag THEN Write(LST, Chr(code));
- END;
- END;
-
- PROCEDURE ChangePrtPlus(codewort : string50; p : BYTE);
- TYPE
- setchtyp = SET OF CHAR;
- VAR
- l,i : BYTE;
- code : BYTE;
- ch, hich,
- loch : CHAR;
- setch : setchtyp;
- flag : BOOLEAN;
- BEGIN
- setch := ['0'..'9', 'A'..'F', 'a'..'f'];
- i := 1;
- l := Length(codewort);
- WHILE i < l DO BEGIN
- flag := FALSE;
- REPEAT
- hich := codewort[i];
- Inc(i);
- UNTIL hich IN setch;
- IF ((i< l) AND (hich IN setch)) THEN flag := TRUE;
- loch := codewort[i];
- Inc(i);
- IF loch IN setch THEN BEGIN
- code := 16*Convert(hich) + Convert(loch);
- END ELSE BEGIN
- code := Convert(hich);
- END;
- IF flag THEN Write(LST, Chr(code));
- END;
- Write(LST, Chr(p));
- END; { OF codeparam}
-
- BEGIN
- j := 0;
- Assign(deffile, deffilename);
- {$I-}
- Reset(deffile);
- {$I+};
- ok := (IOResult = 0);
- IF ok THEN BEGIN
- WHILE NOT Eof(deffile) DO BEGIN
- temp := '';
- shorttemp := '';
- ReadLn(deffile, temp);
- FOR i:=1 TO Length(temp) DO BEGIN
- shorttemp := shorttemp + temp[i];
- IF temp[i] = ';' THEN i := Length(temp);
- END;
- Inc(j); { zählt die übergebenen Steuercodes }
- CASE j OF
- 1 : pname := shorttemp;
- 2 : preset := shorttemp;
- 3 : nlq := shorttemp;
- 4 : notnlq := shorttemp;
- 5 : underl := shorttemp;
- 6 : notunderl := shorttemp;
- 7 : gross := shorttemp;
- 8 : notgross := shorttemp;
- 9 : bold := shorttemp;
- 10 : notbold := shorttemp;
- 11 : super := shorttemp;
- 12 : sub := shorttemp;
- 13 : cancelsu := shorttemp;
- 14 : linehi := shorttemp;
- END;
- END;
- Close(deffile);
- END ELSE
- pname := 'noname'
- END.
- (* ------------------------------------------------------ *)
- (* Ende von PRTUNIT.PAS *)