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

{
STEVE ROGERS

>A method that I have successfully used to delete Records in place is to...

  'Scuse me For butting in, but I have another approach which will
  preserve your Record order. I will present it For a File of Records
  the total size of which is less than 64K. The routine may easily be
  adapted For large Files:
}

Procedure del_rec(fname : String; target : LongInt; rec_size : LongInt);
Type
  t_buf = Array[1..65520] of Byte;
Var
  f   : File;
  buf : ^t_buf;
  n   : Word;
begin
  new(buf);
  assign(f, fname);  { open your File }
  reset(f, 1);
  blockread(f, buf^, sizeof(buf^), n);
  close(f);

  move(buf^[succ(target) * rec_size],
       buf^[target * rec_size], n - (target * rec_size));
  dec(n, rec_size);
  reWrite(f, 1);
  blockWrite(f, buf^, n);
  close(f);
  dispose(buf);
end;

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