//流压缩
procedure CompressStream(InStream, OutStream: TStream; ACompressLevel: TCompressionLevel);
var
CmpStream: TCompressionStream;
begin
InStream.Position := 0;
CmpStream := TCompressionStream.Create(ACompressLevel, OutStream);
try
CmpStream.CopyFrom(InStream, 0);
OutStream.Position := 0;
finally
CmpStream.Free;
end;
end;
//流解压
procedure DeCompressStream(InStream, OutStream: TStream);
var
DeCmpStream: TDeCompressionStream;
Buf: array[1..512] of Byte;
nSrcCount: Integer;
begin
InStream.Position := 0;
DeCmpStream := TDeCompressionStream.Create(InStream);
try
repeat
nSrcCount := DeCmpStream.Read(Buf, sizeof(Buf));
if nSrcCount > 0 then
OutStream.Write(Buf, nSrcCount);
until(nSrcCount = 0);
OutStream.Position := 0;
finally
DeCmpStream.Free;
end;
end;