流的解压及压缩(代码精简高效)

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

用一个函数即实现流的压缩和解压,使用方法:

ZIP(源流,目标流,True/False)TRUE为压缩,FALSE为解压

函数如下:

function ZIP(mInputStream: TStream; mOutputStream: TStream;Compress:BOOL): BOOL;

var

I: Integer;

p:pchar;

TCS:TCompressionStream;

TDS:TDecompressionStream;

begin

result:=false;

if not (Assigned(mInputStream) and Assigned(mOutputStream)) then Exit;

try

if Compress then TCS:=TCompressionStream.Create(clMax,mOutputStream) else TDS:=TDecompressionStream.Create(mOutputStream);//其中的clMax表示压缩级别,可以更改,值是下列参数之一:clNone, clFastest, clDefault, clMax

getMem(p,mInputStream.size);

mInputStream.ReadBuffer(p^,mInputStream.Size );

if Compress then TCS.WriteBuffer(p^,mInputStream.Size ) else TDS.WriteBuffer(p^,mInputStream.Size ); //关键代码:写入流

finally

if Compress then TCS.Free else TDS.Free;

FreeMem(p);

end;

result:=true;

end;

一定先uses Zlib这个单元,它提供了DELPHI下的压缩和解压功能

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航