我已经将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,但遇到了同样的问题。
更多详情:
$ 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;
答案 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如果您需要的可靠性超过任何新功能,那么您应该坚持使用它在此期间介绍。