1

我正在尝试使用 Lazarus 中的 zlibar将一个 zip 文件从一个提取TMemoryStream到另一个。TMemoryStream据我所知,我的代码遵循此处找到的示例。我正在使用一个简单的 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 任何想法为什么我会收到此错误?谢谢。

4

2 回答 2

3

Zlibar 库不读取 zip 文件。它读取和写入自定义存档格式。您可以看出,因为zlibar.pas中描述的目录格式与 zip 文件中使用的完全不同。

FreePascalArchivePackage链接看起来有朝一日可能会提供您想要的东西,尽管该页面上一次发生重大变化是在 2007 年。

还有ZipFile包,它似乎与 Lazarus 一起提供。

于 2012-07-23T13:21:43.347 回答
1

只是一个快速的猜测:尝试设置z.Position := 0before unZip := TZLibReadArchive.Create(z);

于 2012-07-23T07:22:44.217 回答