2014-02-18 91 views
1

我正在使用Delphi,並試圖重寫一個存儲書籍記錄的.dat文件。其中一個變量是.BookAmountAvailable,當一本書被取出時,我希望它降低到該記錄的.BookAmountAvailable 1,我已經將該文件讀入一個類型化的數組,然後找到正確的書,並降低可用的數量1.Delphi重寫.dat文件

當我重寫與更新的陣列的文件時,它不會將其正確寫入(只寫的記錄一回正常,並記錄的其餘空白。

的代碼讀入數組是:

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); 

這是什麼導致它不能正確地重寫數組?

+0

時間的工具和使用數據庫 –

+0

這是一個大學項目和考試委員會堅持不使用數據庫:/ –

+0

難道他們還堅持使用傳統的可怕帕斯卡爾I/O?太糟糕了。 –

回答

1

您的代碼有兩個問題。

  • 動態數組基於ZERO,並將它們索引爲基於1的數組。
  • 尋求()調用是不需要的。
+0

啊,謝謝你指出,我會給它一個! –

+0

有一天試過了,現在它完美地工作,謝謝指出我的錯誤! –