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

    {
    DANIEL HEFLEY

    > according to all references I've read, the only way to delete Records
    > in ANY File is to copy the good Records to a new File, skipping over
    > the ones you want deleted, delete the original File, and rename the new
    > one to the original name.  A long way of doing it, but I don't know of
    > any other.

     No.....You could:
    }

    Procedure DelRec(RecIdx : LongInt);
    Var
      Count,
      RecNo : LongInt;
      IFile : File of ItemRec;
      Item : ItemRec;

    begin
      Assign(IFile,'Tmp.Dat'); Reset(f);   { assuming it exists }
      Seek(IFile,idx);                     { assuming recidx exists }
      RecNo := FileSize(f) - idx - 1;
      For Count := idx to RecNo do
      begin
        Seek(IFile,Count+1);
        Read(IFile,Item);        { read next rec }
        Seek(IFile,Count);
        Write(IFile,Item);       { overide prev rec }
      end;
      Seek(IFile,RecNo);                       { seek to last Record }
      Truncate(IFile);                     { truncate rest of File }
      Close(IFile);
    end;

    {
    > Of course, you could cheat like I do...when I create a File With
    > Records, every one of them has one Boolean field called ACTIVE_REC,
    > which is forced to True when the Record is created.  if the user wants
    > to delete the Record, ACTIVE_REC becomes False and the Program ignores
    > the Record.  Eventually, you'll have to use the above
    > copy-delete-rename Procedure, but it sure saves time if you're just
    > deleting one Record!

    When you initialize new Variables....find the Non Active Record and assign
    your File index Variable to that record!
    }

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