Delphi檔案操作-讀檔案-寫檔案-操作檔案
本例子幾個變數的說明
TFileRec = record //記錄定義
Day : Integer;
... //其他定義
end;
f : File of TFileRec; //標準的輸入/輸出檔案
FilRec : TFileRec; //記錄資料
FileName ; //記錄檔案的名稱
關於記錄檔案的相關操作
(1)記錄檔案的開啟
(2)記錄檔案的讀入和顯示
(3)記錄的增加
(4)記錄的刪除
(5)記錄的修改
(6)記錄檔案的刪除
1、記錄檔案的開啟
需要使用的方法:
AssingFile(f,FileName):
Reset(f): //開啟一個已經存在的記錄檔案
Rewrite(f); //新建立一個記錄檔案
FileSize(f); //返回記錄檔案記錄個數
procedure OpenRecFile(const FileName : string; var f : TFileRec);
begin
AssingFile(f, FileName):
try
Reset(f);
except //開啟檔案出現異常的處理
On EInOutError do
begin
try
if FileExists(FileName) = False then //如果檔案不存在,建立
ReWrite(MethodFile);
else //檔案存在,但是打不開,表示這個檔案有問題
MessageDlg('檔案不能開啟', mtWarning, [mbOK], 0);
except //建立新檔案的時候出現異常的處理
On EInOutError do
MessageDlg('檔案不能建立', mtWarning, [mbOK], 0);
end;
end;
end;
end;
2、記錄檔案的讀入
需要使用的方法
Read(f, FileRec);
procedure ReadData_FromRecFile;
begin
for i := 1 to FileSize(f) do
begin
Read(f, FileRec);
... //其他的處理(比如記錄的顯示等等)
end;
end;
3、記錄的增加
需要使用的方法
Seek(f, RecNo); //RecNo代表要定位置的記錄編號
Write(f, FileRec)
基本思路:
獲取指定記錄的位置,並把該位置後的記錄逐個向後移動
(1)在檔案的尾部增加記錄
procedure InsertData_AtRecFile_Last(const Data : TFileRec); //需要插入的資料
begin
Seek(f, FileSize(f));
Write(f, Data);
end;
(2)在檔案的指定位置前增加記錄
procedure InsertData_AtRecFile(const Index : Integer); //索引號
const Data : TFileRec; //需要插入的資料
var
nI : Integer;
begin
if (Index > FileSize(f)) or (Index < 0) then
Exit;
for nI := FileSize(f) - 1 downto Index do
begin
seek(f, nI);
read(f, FileRec);
Seek(f, nI + 1);
Write(f, FileRec);
end;
Seek(f, Index);
Write(f, Data);
end;
4、記錄的刪除
需要使用的方法
Seek(f, Index); //Index代表要定位置的記錄編號
Write(f, FileRec)
Truncate(f) ; //刪除指定索引號之後的索引檔案
基本思路:
獲取指定位置,並把該位置後的記錄逐個向前移動。 檔案在最後一條記錄前截斷。
(1)刪除指定索引號的記錄
procedure DeleteData_FromRecFile(const Index : Integer);
var
nI : Integer;
begin
if (Index < 0) or (FileSize(f) = 0) then
Exit;
for nI := Index + 1 to FileSize(f) - 1 do
begin
seek(f, nI);
read(f, FileRec);
seek(f, nI - 1);
Write(f, FileRec);
end;
Seek(f, FileSize(f) - 1); //截斷最後一條記錄
Truncate(f);
end;
5、記錄的修改
procedure ModifyData_AtRecFile(const Index : Integer; const Data : TFileRec);
begin
if (Index < 0) or (FileSize(f) = 0) or (Index > FileSize(f) - 1) then
Exit;
Seek(f, Index);
Write(f, Data);
end;
6、記錄檔案的關閉
CloseFile(f);