delphi TDecompressionStream 压缩数据无法用c++ zlib解压
Kaile 2014-10-30 05:06:47 我不熟悉delphi,目前有个需求要将delphi压缩后的数据用c++解压
已知: delphi 用的zlib进行压缩和解压缩,可能的代码如下:
uses ZLib;
const
lclNone:Integer=0;
lclFastest:Integer=1;
lclDefault:Integer=2;
lclMax:Integer=3;
procedure DeCompress; //解压缩过程
var
S:TMemoryStream;
TS:TMemoryStream;
FS:TFileStream;
ZStream:TDecompressionStream;
CompressLevel:Integer;
DataSize:Integer;
begin
FS:=TFileStream.Create('c:\sample.cbl',fmOpenRead);
S:=TMemoryStream.Create;
FS.Position:=12;
FS.Read(CompressLevel,4);
FS.Read(DataSize,4);
if c=lclNone then
S.CopyFrom(FS,FS.Size-20)
else
begin
TS:=TMemoryStream.Create;
TS.CopyFrom(FS,FS.Size-20);
TS.Position:=0;
ZStream:=TDecompressionStream.Create(TS);
S.CopyFrom(ZStream,DataSize);
ZStream.Free;
TS.Free
end;
FS.Free
end;
压缩的处理方法(假设变量s中存储的为需要压缩的数据):
OutStream:=TMemoryStream.Create;
FFileStream.Position:=0;
try
ZStream := TCompressionStream.Create(clMax, OutStream);
try
ZStream.CopyFrom(s, 0);
finally
ZStream.Free;
end;
finally
end;
OutStream.Position:=0;
FFS.CopyFrom(OutStream,OutStream.Size);
OutStream.Free
现在需要用c/c++程序将压缩后的数据进行解压缩,下载了最新的zlib 1.2.8 总是解压失败,返回buffer_error
c++写的调用 zlib的解压缩程序应该没什么问题, *dst 开的缓冲区也够大
请高人指点下要如何解决