delphi Zlib 流压缩解压

http://blog.csdn.net/zhongguoren666/article/details/7077328

procedure UnCompressionStream(var ASrcStream:TMemoryStream); //解压缩
var
nTmpStream:TDecompressionStream;
nDestStream:TMemoryStream;
nBuf: array[1..512] of Byte;
nSrcCount: integer;
begin
ASrcStream.Position := 0;
nDestStream := TMemoryStream.Create;
nTmpStream := TDecompressionStream.Create(ASrcStream);
try
repeat
//读入实际大小
nSrcCount := nTmpStream.Read(nBuf, SizeOf(nBuf));
if nSrcCount > 0 then
nDestStream.Write(nBuf, nSrcCount);
until (nSrcCount = 0);
ASrcStream.Clear;
ASrcStream.LoadFromStream(nDestStream);
ASrcStream.Position := 0;
finally
nDestStream.Clear;
nDestStream.Free;
nTmpStream.Free;
end;
end;

procedure CompressionStream(var ASrcStream:TMemoryStream;ACompressionLevel:Integer = 2); //压缩流
var
nDestStream:TMemoryStream;
nTmpStream:TCompressionStream;
nCompressionLevel:TCompressionLevel;
begin
ASrcStream.Position := 0;
nDestStream := TMemoryStream.Create;
try
//级别
case ACompressionLevel of
0:nCompressionLevel := clNone;
1:nCompressionLevel := clFastest;
2:nCompressionLevel := clDefault;
3:nCompressionLevel := clMax;
else
nCompressionLevel := clMax;
end;
//开始压缩
nTmpStream := TCompressionStream.Create(nCompressionLevel,nDestStream);
try
ASrcStream.SaveToStream(nTmpStream);
finally
nTmpStream.Free;//释放后nDestStream才会有数据
end;
ASrcStream.Clear;
ASrcStream.LoadFromStream(nDestStream);
ASrcStream.Position := 0;
finally
nDestStream.Clear;
nDestStream.Free;
end;
end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值