当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Delphi的组件读写机制(一) 一、流式对象(Stream)和读写对象(Filer)的介绍在面向对象java/j2me/code/ target=_blank>程序设计中,对象式数据管理占有很重要的地位。
 

 

 ·delphi一句话帮助    »显示摘要«
    摘要: 1. 如果想你的程序能够正确处理异常情况的话,请引用sysutils.pas单元,否则即使程序使用了try。。。except。。。也不能正确捕获异常。 2. 定义常量字符串的一种方式 resourcestring aa=aaaa; raise exception.createres(@aa); 3. 字符串常量数组的初始化 const constarray:array [0..2]......
 ·delphi shell    »显示摘要«
    摘要: 这其实是个很老的话题在这里写。实在有点没意义。不过还是写写。因为 shellexecute总还是在经常用到。而且平率比较高。但我不打算重点讲shell 的参数。因为我打算做个面向对象封装。避开不必要参数方面下次调用。 和其它界面api的参数差不多句柄。要实行的操作。程序名。后面两个不重要 的参数。然后是消息。shellexecute主要实施的操作是。打开。查找。打印。 因此我打算做三个......


Delphi的组件读写机制

delphi的组件读写机制(一)

【程序编程相关:Delphi 控制Excel

一.流式对象(stream)与读写对象(filer)的介绍 【推荐阅读:DBGrid 应用全书(一)

【扩展信息:DBGrid使用全书(二)

 在面向对象java/j2me/code/ target=_blank>程序设计中,对象式数据管理占有很重要的地位.在delphi中,对对象式数据管理的支持方式是其一大特色.

 delphi是一个面向对象的可视化设计与面向对象的语言相结合的集成开发环境.delphi的核心是组件.组件是对象的一种.delphi应用程序完全是由组件来构造的,因此开发高性能的delphi应用程序必然会涉及对象式数据管理技术.

 对象式数据管理包括两方面的内容:

● 用对象来管理数据

● 对各类数据对象(包括对象与组件)的管理

 delphi将对象式数据管理类归结为stream对象(stream)与filer对象(filer),并将它们应用于可视组件类库(vcl)的方方面面.它们提供了丰富的在内存.外存与windows资源中管理对象的功能,

 stream对象,又称流式对象,是tstream.thandlestream.tfilestream.tmemorystream.tresourcestream与tblobstream等的统称.它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象与组件) 在内存.外存与数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种stream对象中拷贝数据.

 读写对象(filer)包括tfiler对象.treader对象与twriter对象.tfiler对象是文件读写的基础对象,在应用程序中使用的主要是treader与twriter.treader与twriter对象都直接从tfiler对象继承.tfiler对象定义了filer对象的基本属性与方法.

  filer对象主要完成两大功能:

● 存取窗体文件与窗体文件中的组件

● 提供数据缓冲,加快数据读写操作

 为了对流式对象与读写对象有一个感性的认识,先来看一个例子.

a)写文件

procedure tfomr1.writedata (sender: tobject); r;

var

  filestream:tfilestream;

  mywriter:twriter;

  i: integer

begin

  filestream:=tfilestream.create(‘c:\test.txt’,fmopenwrite);//创建文件流对象

  mywriter:=twriter.create(filestream,1024); //把mywriter与filestream联系起来

  mywriter. writelistbegin;  //写入列表开始标志

  for i:=0 to memo1.lines.count-1 do   

    mywriter.writestring(memo1.lines[i]); //保存memo组件中文本信息到文件中

  mywriter.writelistend;          //写入列表结束标志

  filestream.seek(0,sofrombeginning); //文件流对象指针移到流起始位置

  mywriter.free; //释放mywriter对象

  filestream.free; //释放filestream对象

end;

 

b)读文件

procedure tform1.readdata(sender: tobject);

var

  filestream:tfilestream;

  myreader:treader;

begin

  filestream:=tfilestream.create(‘c:\test.txt’,fmopenread);

  myreader:=trreader.create(filestream,1024); //把myreader与filestream联系起来

  myreader.readlistbegin;  //把写入的列表开始标志读出来

  memo1.lines.clear;  //清除memo1组件的文本内容

  while not myreader.endoflist do //注意treader的一个方法:endoflist

  begin

    memo1.lines.add(myreader.readstring); //把读出的字符串加到memo1组件中

  end;

  myreader.readlistend; //把写入的列表结束标志读出来

  myreader.free;  //释放myreader对象

  filestream.free; //释放filestream对象

end;

 上面两个过程,一个为写过程,另一个为读过程.写过程通过twriter,利用tfilestream把一个memo中的内容(文本信息)存为一个保存在磁盘上的二进制文件.读过程刚好与写过程相反,通过treader,利用tfilestream把二进制文件中的内容转换为文本信息并显示在memo中.运行程序可以看到,读过程忠实的把写过程所保存的信息进行了还原.

 下图描述了数据对象(包括对象与组件).流式对象与读写对象之间的关系.

 

         图(一)

 值得注意的是,读写对象如tfiler对象.treader对象与twriter对象等很少由应用程序编写者进行直接的调用,它通常用来读写组件的状态,它在读写组件机制中扮演着非常重要的角色.


...   下一页
 ·delphi2005中文翻译    »显示摘要«
    摘要: delphi2005中文翻译 很多时候,我们都会要求自己去做些事情,但激情过去,很多为未完成的事情对到了一边。生活也愈加的无聊…… 我也常常这样,但内心实在不想这样下去,所以用下面的方式鼓励自己,希望这次不会轻易放弃……++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++......
» 本期热门文章:

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