Delphi 中压缩流和解压流的应用

2016-01-29 14:26 76 1 收藏

Delphi 中压缩流和解压流的应用,Delphi 中压缩流和解压流的应用

【 tulaoshi.com - Delphi 】

  一、 类的说明

  1、 基类 TCustomZlibStream:类TCustomZlibStream 是类TCompressionStream和TDecompressionStream 类的基类,它主要有一个属性: OnProgress,在类进行压缩或解压缩的过程中会发生这个的事件 ,它的定义如下:

   Procedure OnProgress (Sender: TObject); dynamic;

  2、 压缩类TCompressionStream:类TCompressionStream除了继承了基类的 OnProgress 属性外,又增加了一个属性:CompressionRate,它的定义如下:

   Property CompressionRate: Single read GetCompressionRate;通过这个属性,可以得到压缩比。

  它的几个重要的方法定义如下:

   Constructor TCompressionStream.Create (CompressionLevel: TCompressionLevel; Dest: TStream);

  其中:TcompressionLevel(压缩类型),它由如下几个定义:

   ①、 clNone :不进行数据压缩;

   ②、 clFastest:进行快速压缩,牺牲压缩效率;

   ③、 clDefault:进行正常压缩;

   ④、 clMax: 进行最大化压缩,牺牲速度;

   Dest:目的流,用于存放压缩过的数据。

  Function TCompressionStream.Write (const Buffer; Count: Longint): Longint;

  其中:Buffer:需要压缩的数据;

   Count: 需要压缩的数据的字节数;

   函数返回写入流的字节数。

  压缩类TCompressionStream的数据只能是写入的,如果试图从其内部读取数据,将发生一个"Error "异常。需要压缩的数据通过方法 Write写入流中,在写入的过程中就被压缩,并保存在由构造函数提供的内存流(TmemoryStream)中,同时触发 OnProcess 事件。

  3、 解压缩类 TDecompressionStream :和压缩类TcompressionStream 相反,它的数据是只能读出的,如果试图往其内部写数据,将发生一个"Error "异常。它的几个重要方法定义如下:

   构造函数:Constructor Create(Source: TStream);

   其中:Source 是保存着压缩数据的流;

    Function Read(var Buffer; Count: Longint): Longint;

   数据读出函数,Buffer: 存数据缓冲区;

   Count: 缓冲区的大小;

   函数返回读出的字节数。

   数据在读出的过程中,数据被解压缩,并触发 OnProcess 事件。


来源:http://www.tulaoshi.com/n/20160129/1493308.html

延伸阅读
第一章 概述 在CBUILDER中,存在以下几种流对象: TFileStream TMemoryStream TStringStream TWinSocketStream TBlobStream TOleStream TClientBlobStream TResourceStream 下面是以上各类的继承关系 TObject | TStream | +---------------------------+-----...
宝宝吃出健康牙齿的美味餐 肋排海带汤 ◆材料◆猪肋排、水发海带各500克。 ◆调料◆植物油、姜片、葱花、花椒、茴香、桂皮、盐、味精、料酒、醋、白糖各适量。 做法: [1]猪肋排洗净;花椒、茴香、桂皮、姜片用纱布包好备用。 [2]锅置火上,倒油烧热,放入盐、料酒、肋排、适量水、纱布包,大火煮沸,再转小...
360压缩解压文件   360压缩为您提供了两种解压文件的方式 您可以选择右击需要解压的文件,在右键菜单中选择解压。 也可以找到希望解压的压缩文件,点击选中后,点击软件主界面左上第二个图标 并在新弹出的窗口中设置解压缩选项后,点击即可对文件进行解压。
开发中有时需要在流中查找某个字串,这些字串有可能是ASCII表后半部分或混杂.但是网上提供的例程效果不佳而且代码冗长. 后来自己抽个时间写了一个,代码极少,效率很高.仅供各位参考: function ScanStream(T:Tstream;S:String):integer; var i,j:integer;     p:Pchar; begin   getMem(p,...
标签: ASP rar
有没有想过在线解压缩压缩文件呢?呵呵,有时上传一个压缩包以后,利用Asp程序解压缩的确很方便,尤其是经常更新网站的站长们,由于文本文件压缩比率大,所以采用压缩以后上传再解压缩,这样比直接上传节省了大量的宝贵时间。准备好了吗?那就跟上吧。 要想实现这种功能,首先要得到Rar程序的解压缩核心文件支持(可以下载WinRar软件,再把其...

经验教程

653

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部