2011-05-10 43 views
0

你好,帕斯卡大師! 我有自定義記錄的文件類型:帕斯卡 - 沒有寫入文件

DBCell = record 
    Name: string[10]; 
    Surname: string[15]; 
    Balance:integer; 
    OpenDate: record 
     year: integer; 
     month: 1..12; 
     day:1..31 
    end; 
    AccountN: string[10]; 
end; 
DBFile = file of DBCell; 

和功能,打開並加入新的元素到文件:

procedure Fopenf(var F:DBFile; var FName:string; var FOpened:boolean); 
begin 
    Assign(F,FName); 

    rewrite(F); 

    FOpened:=true; 
end; 

procedure InsN(var F:DBFile;var cell:DBCell;var FOpened:boolean); 
begin 
     Write(F,cell); 
     Close(F); 
     Rewrite(F); 
     Writeln('Added'); 
     FOpened:=false; 
end; 

問題是,沒有什麼實際寫入到文件。我究竟做錯了什麼?

回答

1

的問題是InsN中的'重寫'調用。 '重寫'會創建一個新文件,所以通過在程序結束時調用它,您正在創建一個新的空文件!

2

從我完成任何Pascal開始已經很長時間了,但是IIRC Rewrite會截斷文件。你應該使用Append

你不需要Rewrite()在文件中插入一條記錄後:

procedure InsN(var F:DBFile;var cell:DBCell;var FOpened:boolean); 
begin 
    Write(F,cell); 
    Close(F); 
    Writeln('Added'); 
    FOpened:=false; 
end; 

如果你不想截斷該文件每次打開它:

procedure Fopenf(var F:DBFile; var FName:string; var FOpened:boolean); 
begin 
    Assign(F,FName); 

    append(F); 

    FOpened:=true; 
end; 
+0

問題是,文件是空的。 – Arnthor 2011-05-11 03:05:23

+2

您不能附加()到自定義記錄文件。不過,您可以重置()文件並將指針更改爲結尾。無論如何,問題解決了,謝謝你的幫助。 – Arnthor 2011-05-11 10:12:22

+0

@Nordvind因爲你的問題解決了,通過點擊左邊的大「V」來選擇一些答案作爲正確答案會很禮貌:) – brandizzi 2011-07-25 13:05:28