home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TP_ADV.ZIP / LIST1204.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-11-17  |  1.2 KB  |  56 lines

  1. Unit FileLock;
  2.  
  3. INTERFACE
  4.  
  5. Uses
  6.   DOS;
  7.  
  8. Function Lock ( Var Untyped; pos, size : LongInt ) : Boolean;
  9. Function UnLock ( Var Untyped; pos, size : LongInt ) : Boolean;
  10.  
  11. IMPLEMENTATION
  12.  
  13. Function Lock ( Var Untyped; pos, size : LongInt ) : Boolean;
  14. Var
  15.   reg : Registers;
  16.   f : File absolute Untyped;
  17. Begin
  18.   pos := pos * FileRec ( f ).RecSize;
  19.   size := size * FileRec ( f ).RecSize;
  20.   reg.AH := $5C;
  21.   reg.AL := $00;
  22.   reg.BX := FileRec ( f ).Handle;
  23.   reg.CX := Hi ( pos );
  24.   reg.DX := Lo ( pos );
  25.   reg.SI := Hi ( size );
  26.   reg.DI := Lo ( size );
  27.   Intr ( $21, reg );
  28.   If ( ( reg.Flags AND FCarry ) <> 0 ) Then
  29.     Lock := FALSE
  30.   Else
  31.     Lock := TRUE;
  32. End;
  33.  
  34. Function UnLock ( Var Untyped; pos, size : LongInt ) : Boolean;
  35. Var
  36.   reg : Registers;
  37.   f : File absolute Untyped;
  38. Begin
  39.   pos := pos * FileRec ( f ).RecSize;
  40.   size := size * FileRec ( f ).RecSize;
  41.   reg.AH := $5C;
  42.   reg.AL := $01;
  43.   reg.BX := FileRec ( f ).Handle;
  44.   reg.CX := Hi ( pos );
  45.   reg.DX := Lo ( pos );
  46.   reg.SI := Hi ( size );
  47.   reg.DI := Lo ( size );
  48.   Intr ( $21, reg );
  49.   If ( ( reg.Flags AND FCarry ) <> 0 ) Then
  50.     UnLock := FALSE
  51.   Else
  52.     UnLock := TRUE;
  53. End;
  54.  
  55. End.
  56.