Arrays Delphi重写.dat文件
我正在使用Delphi并试图重写一个存储书籍记录的.dat文件。其中一个变量是.BookAmountAvailable,当取出一本书时,我希望它将该记录的.BookAmountAvailable降低1,我已将该文件读入一个键入的数组,然后找到正确的书并将可用量降低1 当我用更新的数组重写文件时,它没有正确地写入(它只正确地写回一条记录,其余的记录保留为空) 要读入数组的代码是:Arrays Delphi重写.dat文件,arrays,file,delphi,rewrite,Arrays,File,Delphi,Rewrite,我正在使用Delphi并试图重写一个存储书籍记录的.dat文件。其中一个变量是.BookAmountAvailable,当取出一本书时,我希望它将该记录的.BookAmountAvailable降低1,我已将该文件读入一个键入的数组,然后找到正确的书并将可用量降低1 当我用更新的数组重写文件时,它没有正确地写入(它只正确地写回一条记录,其余的记录保留为空) 要读入数组的代码是: assignfile (BookFile,'BookFile.dat'); reset (BookFile); Boo
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的数组进行索引
- 不需要Seek()调用