关于 file of 定义变量说明
来源:互联网 发布:淘宝童装店铺名称大全 编辑:程序博客网 时间:2024/06/06 13:57
前言
在程序中,我们需要用一个途径去把一些有规律的信息存储在磁盘上。不能用TXT格式的文件──因为它不是基于“记录”的,而且管理很不方便。
BDE或ADO也就是说Paradox、Access……唉,不列举了──这些我都不想用,尤其不想用BDE。我要用的是ASCII文本文件。Delphi能做到吗?当然能!这就是“File Of”类型文件,或者说files of some type/binary files。
(译者注:与所有的Win32桌面应用程序编译器相比,Delphi有一个很独到的特点:它编译的Exe可以不需要一些公共动态链接库的支持,尽管因此Delphi的EXE文件可能大一点。而VC、C++Builder、VFP等等这些我用过的编译器,却不是这样,它们编译的EXE往往需要打包一些Dll才可以用。那么,我们用Delphi开发数据库程序时,使用BDE、ADO等等引擎,却因此给Delphi蒙羞──BDE、ADO等等,一般都需要单独安装到操作系统中去。) 下面举例演示这个应用。 首先
我们首先要定义一个基类,也就是一个记录结构: type
TMember = record Name : string[10]; eMail : string[20]; Posts : LongInt; end;
然后声明一个记录集,假设有5条记录: var Members : array[1..5] of TMember;
在我们读写我们的数据信息前,我们需要声明一个基于我们记录结构的文件变量: var F : file of TMember;
注:在Delphi里,我们声明一个文件变量的一般格式就是: var SomeTypedFile : file of SomeType;
这里所说的基类(Some Type),比如可以是Double、数组、记录。但不能是长字符串格式、动态数组、类类型以及指针。
接下来我们要把我们的“数据库”文件链接到我们的程序里去: AssignFile(F, 'Members.dat')
使用一个“文件”,我们需要这样“打开”它,并调用Reset方法打开一个已存在于硬盘上的文件,用Rewrite方法去创建一个新文件。当文件使用完毕,关闭应用程序之前,我们要记得用CloseFile方法“关闭”它。如果忘记关闭,将引起一个I/O错误。当文件句柄被关闭,此前对它的所有更新操作将应用。 (译者注:上面所说的“文件”,不仅仅包括磁盘文件,而且包括串口、打印机、其他设备……这些都是“文件”。) 写入到文件
假设我们已经填充了Members里的5条记录。那么,接下来就是把这5条记录写入磁盘文件的代码: var
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
F : file of TMember; i : integer; begin
AssignFile(F,'members.dat') Rewrite(F) try
for i:= 1 to 5 do Write (F, Members[i]) finally CloseFile(F) end; end;
从磁盘文件读出所有记录 var
Member: Tmember; F : file of TMember; begin
AssignFile(F,'members.dat') Reset(F) try
while not Eof(F) do begin Read (F, Member) {DoSomethingWithMember;} end; finally CloseFile(F) end; end;
注:EOF是文件的结束标志。我们通过判断它的真假,来知道哪里是文件里最后的一条记录。 Seeking and Positioning
文件记录通常是要不断更新的。在一般情况下,我们读写一条记录后,游标立即指向下一条记录。我们可以用下面的方法实现在记录间自由移动游标: { 回到文件头,即第1条记录 } Seek(F, 0) { 跳到第3条记录 } Seek(F, 3)
{ 跳到文件尾,即最后一条记录的后面 } Seek(F, FileSize(F))
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
记录的更新
前面我们仅仅学习了如何读写记录。那么如果我们要求找到第10条记录,然后把这条记录的某个字段(如:Email)修改一下,怎么做?请看下面的代码:
procedure ChangeEMail(const RecN : integer; const NewEMail : string) var DummyMember : TMember; begin
{ assign, open, exception handling 模块略 } Seek(F, RecN)
Read(F, DummyMember)
DummyMember.Email := NewEMail;
{ 此时游标已下移,我们需要重新返回游标位置 } Seek(F, RecN)
Write(F, DummyMember) { 关闭文件 } end; 结束语
至此,我们已经知道如何写记录到磁盘文件,如何读取,如何仅仅改变文件中间某条记录的一部分数据。
在程序中,我们需要用一个途径去把一些有规律的信息存储在磁盘上。不能用TXT格式的文件──因为它不是基于“记录”的,而且管理很不方便。
BDE或ADO也就是说Paradox、Access……唉,不列举了──这些我都不想用,尤其不想用BDE。我要用的是ASCII文本文件。Delphi能做到吗?当然能!这就是“File Of”类型文件,或者说files of some type/binary files。
(译者注:与所有的Win32桌面应用程序编译器相比,Delphi有一个很独到的特点:它编译的Exe可以不需要一些公共动态链接库的支持,尽管因此Delphi的EXE文件可能大一点。而VC、C++Builder、VFP等等这些我用过的编译器,却不是这样,它们编译的EXE往往需要打包一些Dll才可以用。那么,我们用Delphi开发数据库程序时,使用BDE、ADO等等引擎,却因此给Delphi蒙羞──BDE、ADO等等,一般都需要单独安装到操作系统中去。) 下面举例演示这个应用。 首先
我们首先要定义一个基类,也就是一个记录结构: type
TMember = record Name : string[10]; eMail : string[20]; Posts : LongInt; end;
然后声明一个记录集,假设有5条记录: var Members : array[1..5] of TMember;
在我们读写我们的数据信息前,我们需要声明一个基于我们记录结构的文件变量: var F : file of TMember;
注:在Delphi里,我们声明一个文件变量的一般格式就是: var SomeTypedFile : file of SomeType;
这里所说的基类(Some Type),比如可以是Double、数组、记录。但不能是长字符串格式、动态数组、类类型以及指针。
接下来我们要把我们的“数据库”文件链接到我们的程序里去: AssignFile(F, 'Members.dat')
使用一个“文件”,我们需要这样“打开”它,并调用Reset方法打开一个已存在于硬盘上的文件,用Rewrite方法去创建一个新文件。当文件使用完毕,关闭应用程序之前,我们要记得用CloseFile方法“关闭”它。如果忘记关闭,将引起一个I/O错误。当文件句柄被关闭,此前对它的所有更新操作将应用。 (译者注:上面所说的“文件”,不仅仅包括磁盘文件,而且包括串口、打印机、其他设备……这些都是“文件”。) 写入到文件
假设我们已经填充了Members里的5条记录。那么,接下来就是把这5条记录写入磁盘文件的代码: var
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
F : file of TMember; i : integer; begin
AssignFile(F,'members.dat') Rewrite(F) try
for i:= 1 to 5 do Write (F, Members[i]) finally CloseFile(F) end; end;
从磁盘文件读出所有记录 var
Member: Tmember; F : file of TMember; begin
AssignFile(F,'members.dat') Reset(F) try
while not Eof(F) do begin Read (F, Member) {DoSomethingWithMember;} end; finally CloseFile(F) end; end;
注:EOF是文件的结束标志。我们通过判断它的真假,来知道哪里是文件里最后的一条记录。 Seeking and Positioning
文件记录通常是要不断更新的。在一般情况下,我们读写一条记录后,游标立即指向下一条记录。我们可以用下面的方法实现在记录间自由移动游标: { 回到文件头,即第1条记录 } Seek(F, 0) { 跳到第3条记录 } Seek(F, 3)
{ 跳到文件尾,即最后一条记录的后面 } Seek(F, FileSize(F))
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
记录的更新
前面我们仅仅学习了如何读写记录。那么如果我们要求找到第10条记录,然后把这条记录的某个字段(如:Email)修改一下,怎么做?请看下面的代码:
procedure ChangeEMail(const RecN : integer; const NewEMail : string) var DummyMember : TMember; begin
{ assign, open, exception handling 模块略 } Seek(F, RecN)
Read(F, DummyMember)
DummyMember.Email := NewEMail;
{ 此时游标已下移,我们需要重新返回游标位置 } Seek(F, RecN)
Write(F, DummyMember) { 关闭文件 } end; 结束语
至此,我们已经知道如何写记录到磁盘文件,如何读取,如何仅仅改变文件中间某条记录的一部分数据。
0 0
- 关于 file of 定义变量说明
- C\C++ 关于FILE结构定义说明
- 【C语言】C\C++ 关于FILE结构定义说明
- 关于变量的定义
- 关于变量的定义
- 关于变量说明
- 关于变量定义,声明,宏定义等
- 关于c语言定义变量
- 关于STM32的变量定义
- 关于STM32的变量定义
- 关于变量a的定义
- python关于变量的说明
- multiple definition of 变量重复定义
- 关于定义 头文件的说明
- 硬盘厂商关于硬盘容量的定义说明
- 关于“不要在循环体内定义变量”
- 关于Action里面定义的变量问题
- 关于c语言变量定义的注意事项
- 依赖注入和反转控制的区别
- 给牛牛讲编程课_第二次课
- Aho-Corasick Automata
- MAC OS 9个非常实用的命令行操作
- 执行环境
- 关于 file of 定义变量说明
- C++智能指针简单剖析
- C# 事件访问器(Event Accessor)
- scala习题(12)——高阶函数
- ListView的优化
- HEX文件和BIN文件格式的区别
- 计算机网络的发展
- Ubuntu下qt+opencv小试牛刀1:打开图片
- 为什么需要bootloader