最新的7z.dll JEDI JclCompression提取问题

时间:2017-08-28 14:54:52

标签: delphi 7zip delphi-xe3 jedi

我已经将JclCompression与32位版本的7z.dll 9.20一起使用了很长一段时间,并且最近尝试升级到更新版本(16.04)。随着7z.dll版本的更新,我无法提取Bzip2档案或tarball(.tgz),以及其他一些格式。在9.20和16.4之间的7z.dll会导致这种情况发生变化吗?

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

更多详情:

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

$ 0040D523的第一次机会异常。异常类$ C0000094   消息'整数除以零在0x0040d523'。

     

调试输出:异常:灾难性故障处理myapp.exe(2400)

我已按照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;

1 个答案:

答案 0 :(得分:2)

7zip在v9.20(2010)之后多年处于alpha / beta模式。随后的第一个稳定版本是V15.12(2015年11月),在您使用的JCL版本发布后几个月出现(2.8 Testing Build 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如果您需要的可靠性超过任何新功能,那么您应该坚持使用它在此期间介绍。