Delphi读写二进制文件
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;
最新文章
- React Native初探
- 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
- usermod
- Citrix 虚拟化笔记
- XListView理念
- 现在不能使用foxmail同步qq记事本功能,可能是对字数的大小有限制
- 【BZOJ】2049: [Sdoi2008]Cave 洞穴勘测(lct/并查集)
- DirectX 发展历程
- cubieboard中使用py-kms与dnsmasq搭建局域网内全自动KMS激活环境
- 安卓Handler机制的例子
- WCF学习笔记(基于REST规则方式)
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
- 【java设计模式】【创建模式Creational Pattern】简单工厂模式Simple Factory Pattern(静态工厂方法模式Static Factory Method Pattern)
- jQuery中append appendTo prepend prependTo insertBefore insertAfter after before之间的区别
- Ubuntu 18.04 启动root账号并授权远程登录
- 【微信小程序】模仿58同城页面制作以及动态数据加载
- IDEA从SVN中导入多模块项目
- 【python学习-5】面向对象的python
- Lifyray笑傲江湖之API总结TextUtil
- ZH奶酪:最简单的Django安装方法(Windows 7)
热门文章
- 【UML】状态图介绍
- Access-Control-Allow-Methods: OPTIONS &; CORS
- 【bzoj3514】Codechef MARCH14 GERALD07加强版 LCT+可持久化线段树
- Luogu3731 HAOI2017新型城市化(二分图匹配+强连通分量)
- python构建一个项目
- (转)用python获取页面返回的cookie
- [洛谷P1528] 切蛋糕
- 【20160815】noip模拟(未完)
- 【uva11732-";strcmp()"; Anyone?】Trie
- 金中欢乐赛 A题