home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 02 / tricks / print26.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-11-06  |  2.2 KB  |  77 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    PRINT26.PAS                         *)
  3. (*   Aufruf von Switch_Print_Char26_On ermöglicht es,     *)
  4. (* auch das ASCII-Zeichen 26 (^Z) mit der Unit Printer    *)
  5. (* auf dem Drucker auszugeben.                            *)
  6. (* Dazu wird das Attribut des Gerätetreibers geändert     *)
  7. (*                                                        *)
  8. (*       (c) 1991 Gunnar Blumert & TOOLBOX                *)
  9. (* ------------------------------------------------------ *)
  10. UNIT Print26;
  11.  
  12. INTERFACE
  13.  
  14. USES Dos;
  15.  
  16. VAR
  17.   Lst : TEXT;
  18.  
  19.   FUNCTION  Switch_Print_Char26_On : BOOLEAN;
  20.  
  21.   FUNCTION  InitLst(Name : PathStr) : BOOLEAN;
  22.  
  23.   PROCEDURE CloseLst;
  24.  
  25.  
  26. IMPLEMENTATION
  27.  
  28. VAR
  29.   OldExit : POINTER;
  30.  
  31.  
  32.   FUNCTION Switch_Print_Char26_On : BOOLEAN;
  33.   VAR
  34.     Regs : REGISTERS;
  35.   BEGIN
  36.     Switch_Print_Char26_On := FALSE;
  37.     Regs.bx := TextRec(Lst).Handle;
  38.     Regs.ax := $4400;
  39.     MsDos(Regs);                   { Treiberattribut lesen }
  40.     IF Regs.Flags AND FCarry <> 0 THEN BEGIN
  41.       WriteLn('Fehler  beim Lesen des Treiberattributs' +
  42.                                    ' (Nr. ', Regs.ax,')');
  43.       Exit;
  44.     END;                                 { Zeichentreiber? }
  45.     IF Regs.dx AND $80 = $80 THEN BEGIN               { Ja }
  46.       Regs.dx := (Regs.dx AND $ff) OR $20;        { dann:  }
  47.       Regs.ax := $4401;
  48.       MsDos(Regs);                { Treiberattribut setzen }
  49.       IF Regs.Flags AND FCarry <> 0 THEN BEGIN
  50.         WriteLn('Fehler beim Setzen des Treiberattributs' +
  51.                                      ' (Nr. ', Regs.ax,')');
  52.       END;
  53.     END;
  54.     Switch_Print_Char26_On := TRUE;
  55.   END;
  56.  
  57.   {$F+}
  58.   PROCEDURE CloseLst;
  59.   BEGIN
  60.     ExitProc := OldExit;
  61.     Close(Lst);
  62.   END;
  63.   {$F-}
  64.  
  65.   FUNCTION InitLst(Name : PathStr) : BOOLEAN;
  66.   BEGIN
  67.     Assign(Lst, Name);
  68.     Rewrite(Lst);
  69.     InitLst  := IOResult = 0;
  70.     OldExit  := ExitProc;         { Druckerkanal bei       }
  71.     ExitProc := @CloseLst;        { Programmende schließen }
  72.   END;
  73.  
  74. END.
  75. (* ------------------------------------------------------ *)
  76. (*                Ende von PRINT26.PAS                    *)
  77.