/ / JEDI JCL圧縮ライブラリがスパンアーカイブファイルを開かない - delphi、compression、jedi、jedi-code-library

JEDI JCL圧縮ライブラリはオープンなスパンアーカイブファイルではありません - デルファイ、圧縮、jedi、jedi-code-library

概要:

JCL圧縮ライブラリでスパンアーカイブを開くことができません。 Borlandの "windows.pas"で定義されているエラー "(0000001)Incorrect Function"が表示されます。

風景:

JCL圧縮の例を使用して圧縮された単一アーカイブ。
- JCLの例と7zip guiの両方で解凍します。

JCL圧縮の例を使用して圧縮された7つのファイルにわたるスパンアーカイブ。
- 7zip guiだけで解凍します。 JCLの例を使用して解凍しません。

7zip guiを使用して圧縮された単一のアーカイブ。
- JCLの例と7zip guiの両方で解凍します。

7zip guiを使用して7つのファイルに圧縮されたスパンアーカイブ。
- 7zip guiだけで解凍します。 JCLを使用して解凍しない

追加情報

JCL圧縮デモは、JCLライブラリに含まれているものです。
JCL:2.2.1.3970
7zip dll:9.20.0.0と9.65.0.0
スパンアーカイブセット内のファイル名の例: "Test Archive.7z.002"
.tarと.7zの両方の圧縮を試しました
さまざまなファイルサイズが使用されました。 2048バイトと2048KB
Delphi 2009

これはimが使っているコードです。 そのJCL圧縮デモからです。 エラーが行「TJclDecompressArchive(FArchive).ListFiles」で発生します。

procedure TFormMain.ActionOpenROExecute(Sender: TObject);
var
ArchiveFileName, Password: string;
AFormat: TJclDecompressArchiveClass;
SplitArchive: Boolean;
begin
if OpenDialogArchiveRO.Execute then
begin
CloseArchive;

ArchiveFileName := OpenDialogArchiveRO.FileName;
SplitArchive := AnsiSameText(ExtractFileExt(ArchiveFileName), ".001");
if SplitArchive then
ArchiveFileName := ChangeFileExt(ArchiveFileName, "");

AFormat := GetArchiveFormats.FindDecompressFormat(ArchiveFileName);

if AFormat <> nil then
begin
if SplitArchive then
ArchiveFileName := ArchiveFileName + ".%.3d";

InputQuery("Archive password", "Value", Password);

FArchive := AFormat.Create(ArchiveFileName, 0, SplitArchive);
FArchive.Password := Password;
FArchive.OnProgress := ArchiveProgress;

if FArchive is TJclDecompressArchive then
TJclDecompressArchive(FArchive).ListFiles
else
if FArchive is TJclUpdateArchive then
TJclUpdateArchive(FArchive).ListFiles;

ListView1.Items.BeginUpdate;
try
while ListView1.Items.Count < FArchive.ItemCount do
ListView1.Items.Add;
finally
ListView1.Items.EndUpdate;
end;
end
else
ShowMessage("not a supported format");
end;
end;

JCLの例はファイルについて知っていて、それらを開きます。 (画像に使用されているzip形式。同じ問題)。 JCL圧縮の例で開かれたファイルの画像。

おそらく誰かが前にこれに遭遇したことがありますか?
誰かが私を正しい方向に向けてください。
あなたの時間をありがとう。

スコットM.

回答:

回答№1は2

このバグはProject JEDI - Issue Trackerに存在します。

http://issuetracker.delphi-jedi.org/bug_view_advanced_page.php?bug_id=5137

考えられる2つの回避策

  • JCLインストールをにアップグレードします。 最新のデイリービルド
  • の次の行をコメントにする JclCompression.pas 〜で procedure TJclSevenzipDecompressArchive.OpenArchive; そしてパッケージを再構築します。

    //この行をコメントする
    SevenzipCheck(InArchive.Open(AInStream、@ MaxCheckStartPosition、OpenCallback));