Delphi读写二进制文件


本文整理自网络,侵删。

 
二进制文件(也叫类型文件),二进制文件是由一批同一类型的数据组成的一个数据序列,就是说一个具体的二进制文件只能存放同一种类型的数据。
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;

相关阅读 >>

Delphi 关于 class helper for ... 语法

Delphi整理二(object pascal语言)

Delphi mediaplayer循环播放mp3所有音乐文件问题?

Delphi 用tidsmip和tidmessage发送邮件

Delphi word文档内容批量替换

Delphi 判断 中文字符

Delphi 实现php的urlencode编码效果

Delphi xe8 form.onshow的一个小问题

Delphi之声音资源(*.res)的编译方法

Delphi 将鼠标锁定在一定范围

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...