选择显示字体大小

基于delphi的"流"编程实现文件加密器

  数据流是面向对象程序设计语言中面向对象思想的典型体现,它彻底地取代了早期的利用函数实现输入输出的功能,克服了用函数实现输入输出功能的诸多弊端。简单来说,流就是建立在面向对象基础上的一种抽象的处理数据的工具。 在流中,可定义一些处理数据的基本操作,如读取数据、写入数据等,程序员是对流进行操作,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。掌握好对流的操作在并程序中充分利用流的方便性,不仅能使在编写面向过程的程序时效率大大提高。本文以文件加密为例说明delphi编程中流的概念及应用。


  一、流的基本概念

  在delphi中,所有流对象的基类为tstream类,其中定义了所有流的共同属性和方法。

  tstream类中定义的属性介绍如下:

  (1)size:此属性以字节为单位返回流中数据大小。

  (2)position:此属性控制流中存取指针的位置。

  tstream类中定义的四个虚方法:

  (1)read:此方法实现将数据从流中读出。

  函数原形为:

  function read(var buffer;count:longint):longint;virtual;abstract;

  参数buffer为数据读出时放置的缓冲区,count为需要读出的数据的字节数,该方法返回值为实际读出的字节数,它可以小于或等于count中指定的值。

  (2)write:此方法实现将数据写入流中。

  函数原形为:

  function write(var buffer;count:lonogint):longint;virtual;abstract;

  参数buffer为将要写入流中的数据的缓冲区,count为需要写入数据的长度字节数,该方法返回值为实际写入流中的字节数。

  (3)seek:此方法实现流中指针的移动。函数原形如下:function seek(offset:longint;origint:word):longint;virtual;abstract;参数offset表示以origint为基准指针移动的方向和字节数,为正表示指针从数据头向数据尾移动,为负表示指针从数据尾向数据头方向移动。参数origint指出指针移动参照的基准,其可能的取值如下:a)sofrombeginning:offset以数据开始处为基准移动,此时offset必须大于或者等于零。b)sofromcurrent:offset以指针的当前位置为基准。c)sofromend:offset以数据结束的位置为基准。此时offset必须小于或者等于零。该方法返回值为移动后指针的位置。

  (4)setsize:此方法实现改变数据的大小。

  函数原形为:

  function setsize(newsize:longint);virtual;

  tstream类中定义的三个静态方法:

  (1)readbuffer:此方法的作用是从流中当前位置读取数据。函数原形为:procedure readbuffer(var buffer;count:longint);参数的定义跟上面的read函数相同。需要注意的是,当读取的数据字节数与需要读取的字节数不相同时,该函数将产生ereaderror异常。

  (2)writebuffer:此方法的作用是在当前位置向流写入数据。函数原形为:procedure writebuffer(var buffer;count:longint);参数的定义跟上面的write函数相同,同样,当写入的数据字节数与需要写入的字节数不相同时,将产生ewriteerror异常。

  (3)copyfrom:此方法的作用是从其它流中拷贝数据流。函数原形为:function copyfrom(source:tstream;count:longint):longint;参数source为源数据流,count为拷贝的数据字节数。当count大于0时,copyfrom从source参数的当前位置拷贝count个字节的数据;当count等于0时,copyfrom设置source参数的position属性为0,然后拷贝source的所有数据。

  tstream派生类中最常用的是tfilestream类,该类一般被用来存取文件。建立一个tfilestream类实例声明如下:constructor create(const filename:string;mode:word);其中filename为文件名(包括路径),参数mode为找开文件的方式,它包括文件的打开模式和共享模式,其可能的取值和意义可以参考相关帮助。

  tstream还有一个叫内存流的派生类tmemorystream,它在内存中建立一个流对象,其基本方法和函数跟tfilestream类相似。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons