delphi编程中传统文件操作与面向对象的流文件操作

delphi编程中传统文件操作与面向对象的流文件操作

ID:9240641

大小:32.50 KB

页数:4页

时间:2018-04-24

delphi编程中传统文件操作与面向对象的流文件操作_第1页
delphi编程中传统文件操作与面向对象的流文件操作_第2页
delphi编程中传统文件操作与面向对象的流文件操作_第3页
delphi编程中传统文件操作与面向对象的流文件操作_第4页
资源描述:

《delphi编程中传统文件操作与面向对象的流文件操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Delphi编程中传统文件操作与面向对象的流文件操作  Delphi的很多书讲到文件操作时,都是讲的以前ObjectPascal的文件管理功能,其实在Delphi中我觉得更有效率的文件管理功能是使用Delphi中的流对象,使用流对象也更加符合面向对象编程的思想。使用流对象进行文件管理,与传统的ObjectPascal文件管理相比有哪些优势?Delphi中的流不仅仅可以针对文件管理操作,还可以处理动态内存数据、网络数据、数据库二进制大对象等多种形式的数据。  在Delphi中,Tstream代表所有

2、流的基类,不过它是一个抽象类,它的各子类实现了它并形成了不同功能的流对象,如TFileStream、TBlobStream、TMemoryStream等,其中TFileStream是操作文件的流类,TBlobStream是针对数据库表中二进制大对象字段的流类,TMemoryStream是处理内存数据的流类。利用这些不同的流对象就能完成针对不同数据存储的读取操作。  传统文件管理要求操作文件按照一定的顺序即:打开文件→文件读写→关闭文件。而流对象的操作方式与传统的方式不同,程序员对流进行所有操作,而

3、不用关心流的另一头数据的真正流向,因此大大简化了编写程序的复杂度,使得文件处理对于用户的透明度更高。流不但可以处理文件,还能处理动态内存数据、数据库中的二进制大对象数据、网络数据等多种数据存储形式,如果我们能在程序中利用流的性能,那会改善我们程序的效率。说了这么多流的好处,现在分别介绍一下传统文件操作与流对象操作的异同。  传统文件操作简介:  1.文件类型变量与磁盘文件的关联  函数原型procedureAssignFile(VarF;FileName:String);  F是文件类型变量,Fi

4、leName表示实际文件名,也可以包括路径。  2.文件的打开  函数原型procedureReset(VarF[:File;RecSize:Word]);  F是文件类型变量,其中RecSize表示每次读取记录的字节数。  3.文件的读写操作  读文件函数原型procedureBlockRead(varF:File;varBuf;Count:Integer[;varAmtTransferred:Integer]);  写文件函数原型procedureBlockWrite(varf:File;va

5、rBuf;Count:Integer[;varAmtTransferred:Integer]);  F表示文件类型变量,Buf内存缓冲区,任意类型都可;Count读取记录数目;AmtTransferred表示实际读取或者保存的记录数目,当在正常读取或保存时,该参数返回的值与Count相等。  流对象操作方法简介:  1.流是对象,要使用流对象就必须对其进行实例化,所以它有构造函数  函数原型constructorCreate(constFileName:string;Mode:Word);over

6、load;  FileName表示文件名称,也可以包括路径;Mode以怎样的模式创建流的实例。  常用Mode取值及说明如下表:   2.CopyFrom函数能从其他流中复制数据  函数原型functionCopyFrom(Source:TStream;Count:Int64):Int64;  Source表示要从中复制数据的流对象;Count表示复制的字节数;返回实际复制的字节数。  下面我们举一个文件复制的例子,来看看传统的文件管理方式下与使用流对象方式下的不同之处,并能体会究竟哪种方法更符合

7、面向对象编程的要求、更便捷。  这个例子以复制任意类型的文件为一个指定名称的目标文件,下面是操作详细步骤:  1.建立一个新的工程保存为Project1.dpr。  2.在窗体中放置如下控件  两个Tlabel组件、  两个Tedit组件、四个TButton组件,一个TopenDialog和一个TsaveDialog组件,分别设置组件的属性,界面如图一所示  3.编写“传统方式复制文件”按钮的OnClick事件,代码与注释如下:  procedureTForm1.Button1Click(Send

8、er:TObject);  Var  SourceFile,DestFile:File;  Buf:Array[0..1023]ofbyte;//内存缓冲区  Reads,Writes:Integer;//分别表示实际读取和写入的字节数  begin  Try  AssignFile(SourceFile,Edit1.Text);//关联源文件  Reset(SourceFile,1);//只读方式打开源文件,并设置每次读取记录的字节数为1字节  AssignFile(DestFi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。