流操作的语法
delphi在这两方面都做的相当出色.在delphi的早期版本turbo pascal 中就曾有流(stream).群(collection)与资源(resource)等专门用于对象式数据管理的类.在delphi中,这些功能得到了大大的加强.delphi将对象式数据管理类归结为stream对象(stream)与filer对象(filer),并将它们应用于可视部件类库(vcl)的方方面面.它们不仅提供了在内存.外存与windows资源中管理对象的功能,还提供了在数据库blob字段中对象的功能. 【程序编程相关:WebSphere Applicatio】
【推荐阅读:使用 Apache Derby 开发 P】
20.1 流式对象的实现原理与应用 【扩展信息:使用 Delphi 代码创建/删除 DB】
在本章中将介绍stream对象与filer对象的实现原理.应用方法以及在超媒体系统中的应用.这对于运用delphi 开发高级应用是很重要的.
stream对象,又称流式对象,是tstream.thandlestream.tfilestream.tmemorystream.tresourcestream与tblobstream等的统称.它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象与部件) 在内存.外存与数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种stream对象中拷贝数据.
下面介绍各种对象的数据与方法及使用方法.
20.1.1 tstream对象
tstream对象是能在各种媒介中存储二进制数据的对象的抽象对象.从tstream 对象继承的对象用于在内存.windows资源文件.磁盘文件与数据库字段等媒介中存储数据.
tstream中定义了两个属性:size与position.它们分别以字节为单位表示的流的大小与当前指针位置.tstream中定义的方法用于在各种流中读.写与相互拷贝二进制数据.因为所有的stream对象都是从tstream中继承来的,所以在tstream中定义的域与方法都能被stream对象调用与访问.此外,又由于面向对象技术的动态联编功能,tstream为各种流的应用提供了统一的接口,简化了流的使用;不同stream对象是抽象了对不同存储媒介的数据上的操作,因此,tstream的需方法为在不同媒介间的数据拷贝提供了最简捷的手段.
20.1.1.1 tstream的属性与方法
1. position属性
声明:property position: longint;
position属性指明流中读写的当前偏移量.
2. size属性
声明:property size: longint;
size属性指明了以字节为单位的流的的大小,它是只读的.
3. copyfrom方法
声明:function copyfrom(source: tstream; count: longint): longint;
copyfrom从source所指定的流中拷贝count个字节到当前流中, 并将指针从当前位置移动count个字节数,函数返回值是实际拷贝的字节数.
4. read方法
声明:function read(var buffer; count: longint): longint; virtual; abstract;
read方法从当前流中的当前位置起将count个字节的内容复制到buffer中,并把当前指针向后移动count个字节数,函数返回值是实际读的字节数.如果返回值小于count,这意味着读操作在读满所需字节数前指针已经到达了流的尾部.
read方法是抽象方法.每个后继stream对象都要根据自己特有的有关特定存储媒介的读操作覆盖该方法.而且流的所有其它的读数据的方法(如:readbuffer,readcomponent等)在完成实际的读操作时都调用了read方法.面向对象的动态联编的优点就体现在这儿.因为后继stream对象只需覆盖read方法,而其它读操作(如readbuffer.readcomponent等)都不需要重新定义,而且tstream还提供了统一的接口.
5. readbuffer方法
声明:procedure readbuffer(var buffer; count: longint);
readbuffer方法从流中将count个字节复制到buffer 中, 并将流的当前指针向后移动count个字节.如读操作超过流的尾部,readbuffer方法引起ereaderror异常事件.
6. readcomponent方法
声明:function readcomponent(instance: tcomponent): tcomponent;
readcomponent方法从当前流中读取由instance所指定的部件,函数返回所读的部件.readcomponent在读instance及其拥有的所有对象时创建了一个reader对象并调用它的readrootcomponent方法.
... 下一页