流的压缩和解压

 1 uses
 2   Zlib;
 3 
 4 //压缩函数
 5 procedure Zip(var fs: TMemoryStream);
 6 var
 7   cs: TCompressionStream;
 8   ms: TMemoryStream;
 9   num: Integer;
10 begin
11   if not(Assigned(fs) and (fs.Size>0)) then Exit;
12 
13     num := fs.Size;
14     ms := TMemoryStream.Create;
15     cs := TCompressionStream.Create(clMax, ms);
16   try
17     fs.SaveToStream(cs);
18     cs.Free;
19     //ms.Position := 0;
20     fs.Clear;
21     fs.WriteBuffer(num, sizeof(num));
22     fs.CopyFrom(ms, 0);
23   finally
24     ms.Free;
25   end;
26 end;
27 
28 //解压函数
29 procedure UnZip(var fs: Tmemorystream);
30 var
31   ds: TDecompressionStream;
32   ms: TMemoryStream;
33   num: Integer;
34 begin
35   if not(Assigned(fs) and (fs.Size>0)) then Exit;
36 
37   fs.Position := 0;
38   fs.ReadBuffer(num,sizeof(num));
39   ms := TMemoryStream.Create;
40   ds := TDecompressionStream.Create(fs);
41   try
42     ms.SetSize(num);
43     ds.Read(ms.Memory^, num);
44     //ms.Position := 0;
45     fs.Clear;
46     fs.CopyFrom(ms, 0);
47   finally
48     ds.Free;
49     ms.Free;
50   end;
51 end;

 

转载于:https://www.cnblogs.com/jieke/archive/2013/02/26/2934207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值