http://www.cnblogs.com/railgunman/archive/2010/08/16/1801004.html
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);
?