当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 流操作的语法 Delphi在这两方面都做的相当出色。
 

 

 ·企业内容管理解决方案    »显示摘要«
    摘要: 级别: 初级 lei zhao 软件工程师, ibm corporation 2004 年 12 月 06 日 结合 ibm workplace web content management 与 db2 content manager 作为企业 web 内容管理解决方案。本文强调了集成两个系统所面临的任务,并通过例子说明如何结合使用这两个系统。......
 ·cloudscape 与 tomcat 的集成    »显示摘要«
    摘要:将数据库管理器添加到 servlet 容器中的指导手册 级别: 初级 lance d bader 高级软件工程师, ibm corporation 2004 年 10 月 cloudscape™ 是用 java™ 实现的数据库管理器。而 tomcat 是用 java 实现的 servlet 基准容器。本文是一指导性手......


流操作的语法

流操作的语法

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方法.


...   下一页
 ·结合使用 service data objects    »显示摘要«
    摘要: 级别: 初级 c.m.saracco, 高级软件工程师, ibm jacques labrie, 高级软件工程师, ibm stephen brodsky, 高级技术工作人员, ibm 2004 年 9 月 将 enterprise information integration (eii) 技术与 service data objec......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE