那说明还是文件指针没有被设置,应该是这样:
inpStream.Position := 0;
sz := inpStream.Size;
但是你说这样会引发错误,可能是你的
DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
的参数传递问题,我没有 zlib 的源代码,不知道到底应该怎么传,猜一下吧:
可能需要先给 OutBuf 分配空间,或者你传的那个 0 不对,这样试一试:
GetMem(OutBuf, sz * 2);
DecompressBuf(InpBuf, sz, sz * 2, OutBuf, OutBytes);