1

Lazarusでzlibarを使用してzipファイルTMemoryStreamを別のファイルに抽出しようとしています。TMemoryStream私が言えることから、私のコードはここにある例に従います。1つのテキストファイルを含む単純な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 年にページが最後に大幅に変更されましたが、いつの日か必要なものを提供するように見えます。

Lazarus に付属しているように見えるZipFileパッケージもあります。

于 2012-07-23T13:21:43.347 に答える
1

簡単な推測:z.Position := 0前に設定してみてくださいunZip := TZLibReadArchive.Create(z);

于 2012-07-23T07:22:44.217 に答える