home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 August / PCWorld_2001-08_cd.bin / Software / Vyzkuste / archident / UMLEIT.PAS < prev   
Pascal/Delphi Source File  |  2001-06-24  |  1KB  |  67 lines

  1. (* Die Unit Umleit ermöglicht die Dateiumleitung und Piping trotz Einbindung
  2.    von CRT. Einfach mit USES Umleit; einbinden.
  3.  
  4.    The Unit 'Umleit' allows piping to/from stdout/stdin even if CRT is
  5.    used. Simply include with USES Umleit;  *)
  6.  
  7. UNIT Umleit;
  8.  
  9. {$B-,I-,V-,E-,S-,N-,R-,X-,A+}
  10. {$IFNDEF DEBUG}
  11. {$D-,L-}
  12. {$ENDIF}
  13.  
  14. INTERFACE
  15.  
  16. VAR EingabeUmgeleitet,      (* Input redirected?  *)
  17.     AusgabeUmgeleitet,      (* Output redirected? *)
  18.     DeviceFehler: Boolean;  (* Device error?      *)
  19.     Tastatur,               (* Variables for keyboard and monitor *)
  20.     Schirm: Text;
  21.  
  22. IMPLEMENTATION
  23.  
  24. Uses Dos,Crt;
  25.  
  26. VAR OldExit: Pointer;
  27.  
  28. PROCEDURE NewExitProc; Far;
  29.  BEGIN
  30.   Close(Tastatur);
  31.   Close(Schirm);
  32.   ExitProc := OldExit;
  33.  END;
  34.  
  35. VAR Regs: Registers;
  36.  
  37. BEGIN
  38.  With Regs do
  39.   BEGIN
  40.    ax := $4400;
  41.    bx := 0;
  42.    MsDos(Regs);
  43.    DeviceFehler := (Flags and FCarry)<>0;
  44.    EingabeUmgeleitet := DeviceFehler or (dl and $81<>$81);
  45.    ax := $4400;
  46.    bx := 1;
  47.    MsDos(Regs);
  48.    AusgabeUmgeleitet := DeviceFehler or (dl and $82<>$82);
  49.   END;
  50.  If EingabeUmgeleitet then
  51.   BEGIN
  52.    Assign(Input,'');
  53.    Reset(Input);
  54.   END;
  55.  If AusgabeUmgeleitet then
  56.   BEGIN
  57.    Assign(Output,'');
  58.    Rewrite(Output);
  59.   END;
  60.  AssignCrt(Tastatur);
  61.  Reset(Tastatur);
  62.  AssignCrt(Schirm);
  63.  Rewrite(Schirm);
  64.  OldExit := ExitProc;
  65.  ExitProc := @NewExitProc;
  66. END.
  67.