Delphi重写.dat文件

时间:2014-02-18 21:17:37

标签: arrays file delphi rewrite

我正在使用Delphi并尝试重写存储书籍记录的.dat文件。其中一个变量是.BookAmountAvailable,当一本书被取出时我希望它降低到.BookAmountAvailable该记录的1,我已经将文件读入一个打字数组,然后找到了正确的书并降低了数量由1提供。

当我使用更新的数组重写文件时,它没有正确写入(它只能正确写回其中一条记录,其余记录留空。

读入数组的代码是:

assignfile (BookFile,'BookFile.dat');
reset (BookFile);
BookCounter := FileSize(BookFile);
SetLength(BookArray, BookCounter);
for Count1 := 1 to BookCounter  do
  begin
    read(BookFile, SingleBook);
    BookArray[Count1] := SingleBook;
  end;
closefile (BookFile);

我用来重写文件的代码是:

  BookArray[Count].BookAmountAvailable := BookArray[Count].BookAmountAvailable -1;
  assignfile (BookFile, 'BookFile.dat');
  rewrite (BookFile);
  for Count1 := 1 to BookCounter do
    begin
      seek (BookFile, Count1);
      write(BookFile, BookArray[Count1]);
    end;
  closefile (BookFile);

是什么导致它没有正确地重写数组?

1 个答案:

答案 0 :(得分:1)

您的代码存在两个问题。

  • 动态数组是基于ZERO的,您可以将它们编入基于1的数组。
  • 不需要Seek()调用。