我正在尝试使用Lazarus中的zlibar将zip文件从TMemoryStream
提取到另一个TMemoryStream
。据我所知,我的代码遵循here找到的示例。我正在使用一个简单的zip存档,其中包含一个文本文件。 zip存档是使用PowerArchiver创建的,没什么特别的。这是我的代码:
uses
zlibar;
var
z, Dest: TMemoryStream;
unZip: TZLibReadArchive;
begin
z := TMemoryStream.Create;
z.LoadFromFile('kov.zip');
unZip := TZLibReadArchive.Create(z);
UnZip.ExtractFileToStream(0, Dest);
我收到此错误:“ZLibError(2)损坏文件或文件类型不正确。”
请在此处查看zlibar.pas:https://dl.dropbox.com/u/8899944/files/zlibar.pas
任何想法为什么我收到此错误?感谢。
答案 0 :(得分:3)
Zlibar库不读取zip文件。它读取和写入自定义存档格式。您可以说,因为zlibar.pas中描述的目录格式与the one used in zip files完全不同。
FreePascalArchivePackage链接看起来可能有一天会提供您想要的内容,尽管该页面最后一次在2007年发生了重大变化。
还有ZipFile包,似乎与Lazarus一起提供。
答案 1 :(得分:1)
快速猜测:尝试在z.Position := 0
之前设置unZip := TZLibReadArchive.Create(z);
。