我已经使用 JclCompression 和 32 位版本的 7z.dll 9.20 有一段时间了,最​​近尝试升级到更新的版本 ( 16.04 )。随着 7z.dll 版本的更新,我无法提取 Bzip2 文件或 tarball (.tgz) 以及其他一些格式。 7z.dll 在 9.20 和 16.4 之间有什么改变会导致这种情况吗?

我还尝试了 9.38 和 15.14 的 7z.dll,但遇到了同样的问题。

更多细节:

  • Delphi XE3
  • JCL 2.8 测试版本 5677
  • 7z.dll 来自 7z1604.exe(32 位)
  • 我尝试过的任何 .bz2 文件都会给我以下错误:



  • 我遵循了 this post 上的提取代码。这是我的线程的提取程序,我看到错误:
    procedure TExtractThread.Execute();
    begin
      if FArchive.ItemCount > 0 then
      begin
        FArchive.OnProgress := ArchiveProgress;
        FExtractionError := False;
        try
          FArchive.ExtractAll(FOutputDir);
        except on E: Exception do
          begin
            FExtractionError := True;
            OutputDebugString(pchar('Exception:'+E.Message));
          end;
        end;
      end;
    end;
    

    最佳答案

    在 v9.20 (2010) 之后,7zip 多年来一直处于 alpha/beta 模式。随后的第一个稳定版本是 V15.12(2015 年 11 月),它在您使用的 JCL 版本发布几个月后发布(2.8 测试版本 5677,2015 年 9 月)。支持 7z.dll 版本 15.14 was added Jan 3, 2016 。对于比这更新的 DLL 版本,有 does not seem to be any further updates checked in。如果您想使用较新版本的 7Zip,您可能应该将 JCL 更新到当前版本。

    如果您不想测试 beta 或每日构建,那么当前稳定的 JCL 版本 (V2.4.1) is distributed with 7z.dll version 9.22 并且如果您比同时引入的任何新功能更需要可靠性,您应该坚持使用它。

    关于delphi - 最新 7z.dll 的 JEDI JclCompression 提取问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45921881/

    10-13 04:26