home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 01 / tricks / devices.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-10-10  |  1.7 KB  |  68 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     DEVICES.PAS                        *)
  3. (*     Einfaches Deklarieren von Gerätetreibern unter     *)
  4. (*                     Turbo Pascal.                      *)
  5. (*          (c) 1989  Horst Mende  &  TOOLBOX             *)
  6. (* ------------------------------------------------------ *)
  7. {$F+,O+}
  8. UNIT Devices;
  9.  
  10. INTERFACE
  11.  
  12. USES Dos;
  13.  
  14.   PROCEDURE AssignDevice(VAR f      : TEXT;
  15.                              FOpen,
  16.                              FIn,
  17.                              FOut,
  18.                              FFlush,
  19.                              FClose : POINTER);
  20.  
  21.   FUNCTION Ignore(VAR f : TextRec) : INTEGER;
  22.  
  23. IMPLEMENTATION
  24.  
  25. VAR
  26.   InFunc, OutFunc : POINTER;
  27.  
  28.   FUNCTION Ignore(VAR f : TextRec) : INTEGER;
  29.   BEGIN
  30.     Ignore := 0
  31.   END;
  32.  
  33.   FUNCTION FInOut(VAR f : TextRec) : INTEGER;
  34.   BEGIN
  35.     WITH f DO BEGIN
  36.       IF (mode = FMINPUT) THEN BEGIN
  37.         InOutFunc := InFunc;
  38.         FlushFunc := @Ignore
  39.       END ELSE BEGIN
  40.         InOutFunc := @OutFunc;
  41.         FlushFunc := @OutFunc;
  42.       END;
  43.       CloseFunc := @Ignore;
  44.     END;
  45.     FInOut := 0;
  46.   END;
  47.  
  48.   { Neuen Handle für Gerätetreiber zuweisen }
  49.   PROCEDURE AssignDevice;
  50.   BEGIN
  51.     WITH TextRec(f) DO BEGIN
  52.       Handle    := $FFFF; { Ungültig }
  53.       Mode      := FMCLOSED;
  54.       BufSize   := SizeOf(Buffer);
  55.       BufPos    := 0;
  56.       BufPtr    := @Buffer;
  57.       OpenFunc  := FOpen;
  58.       InOutFunc := @FInOut;
  59.       FlushFunc := FFlush;
  60.       CloseFunc := FClose;
  61.       Name[0]   := #0;
  62.     END;
  63.     InFunc  := Fin;
  64.     OutFunc := Fout;
  65.   END;
  66. END.
  67. (* ------------------------------------------------------ *)
  68. (*                Ende von DEVICES.PAS                    *)