http://www.cnblogs.com/hnxxcxg/p/3691742.html
?
二進制文件(也叫類型文件),二進制文件是由一批同一類型的數據組成的一個數據序列,就是說一個具體的二進制文件只能存放同一種類型的數據。
type?
TMember = record?
Name : string[10];?
eMail : string[20];?
Posts : LongInt;?
end;?
var Members : array[1..50] of TMember;?
向磁盤存儲信息之前我們需要定義一個二進制類型文件的變量名,下面的代碼聲明一個名為F的類型文件變量。?
var F : file of TMember;?
在Delphi中,為了建立一個二進制文件,需要使用這樣的語法:var SomeTypedFile : file of SomeType ;?
這個文件的基類型(SomeType)可以是標準類型(比如整型),也可以是數組或記錄類型,但是不能為長字符串、動態數組、類、對象或者是一個指針。?
var F : file of TMember;?
i : integer ;?
begin?
AssignFile(F,'Members.dat');?
Rewrite(F);?
try?
for i:= 1 to 50 do Write (F, Members[ i ]);?
finally?
CloseFile(F);?
end;?
end;
為了處理“Members.dat”文件記錄的所有數據,必須使用如下形式的代碼:
var Member: TMember?
F : file of TMember;?
begin?
AssignFile(F,'Members.dat');?
Reset(F);?
try?
while not Eof(F) do begin Read (F, Member);?
{這里可以對論壇成員信息進行相關處理}?
end;?
finally?
CloseFile(F);?
end;?
end;
二進制文件還可以使用標準的Seek過程實現隨機訪問,Seek過程可以指定文件當前位置的跳轉。利用FilePos函數和FileSize函數可以返回文件的當前位置以及當前文件的大小(就是記錄的條數)。
{返回到文件開頭也就是第一條記錄開始處}?
Seek(F, 0);?
{直接到第五條記錄處}?
Seek(F, 5);?
{到文件結尾處也就是最后一條記錄結束的地方}?
Seek(F, FileSize(F));
var
Myrec:TMyrec;
Rec:TPersonRec;
Reccount:integer;
begin
Myrec := TMyrec.Create(Apppath+'History.dat',fmOpenRead or fmShareDenyWrite);
Myrec.first;
Reccount:=Myrec.GetNumRecs;
for i:=1 to Reccount do
begin
Myrec.ReadRec(Rec);
Rec.xxxx;
//Myrec.AppandRec(Rec);?
Myrec.nextRec;
end;?
end;
?
var
Myrec:TMyrec;
Rec:TPersonRec;
Reccount:integer;
begin
Myrec := TMyrec.Create(Apppath+'History.dat',fmOpenRead or fmShareDenyWrite);
Myrec.first;
Reccount:=Myrec.GetNumRecs;
for i:=1 to Reccount do
begin
Myrec.ReadRec(Rec);
Rec.xxxx;
//Myrec.AppandRec(Rec);?
Myrec.nextRec;
end;?
end;