[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]

{
The following Program is a slight modification of one posted by Zach
Linnet.  The problem is it doesn't lock the use of the File and allows
multiple PC's to access the File at the same time.  Also, it seems to
take input from the keyboard when it isn't supposed to and I am unable
to locate why.  How could I improve this to actually lock the File?
What if I just wanted to lock one or two Records?
}

Program Sample_File_Locking_Program;
Uses
  Crt;
Type
  Fi = File of Integer;
Var
  FileName : String;
  f : Fi;
  x, n : Integer;
  Choice : Char;

begin
  {$I-}
  FileName := 'e:\test\test.dat';
  Assign(f,FileName);
  Repeat
    Write('Option [rwq] ? '); choice := ReadKey;
    Writeln(choice);
    Case choice of
      'r' : begin
              Writeln('Attempting to read : ');
              Reset(f);
              While Ioresult <> 0 do
                begin
                  Writeln('Busy waiting...');
                  Reset(f);
                end;
              Write('Reading now...');
              For x := 1 to 1000 do
                Read(f,n);
              Writeln('done!');
              Close(f);
            end;
      'w' : begin
              Writeln('Attempting to Write : ');
              Reset(f);
              if Ioresult = 2 then
                ReWrite(f);
              While Ioresult <> 0 do
                begin
                  Writeln('Busy waiting...');
                  Reset(f);
                end;
              Write('Writing now...');
              For x := 1 to 1000 do
                Write(f,x);
              Writeln('done!');
              Close(f);
            end;
     end; { Case }
  Until Choice = 'q';
  {$I+}
end.

[Back to NETWORK SWAG index]  [Back to Main SWAG index]  [Original]