【问题标题】:Delphi unrar.dll reports wrong packed sizeDelphi unrar.dll 报告错误的打包大小
【发布时间】:2014-09-23 03:34:15
【问题描述】:

在应用程序中使用 winrar 的免费软件 unrar.dll:http://www.rarlab.com/rar_add.htm 和 XE7

UnRAR.dll 适用于 Windows 软件开发人员的 UnRAR 动态库

当我列出一个 rar 内容(其中的文件列表)时,文件名是正确的,但报告的大小始终为 0。他们自己的 Delphi 演示也这样做,我怀疑它是很久以前用更旧的Delphi 版本。

调用RARReadHeaderEx(hArcData, HeaderData)后,HeaderData UnpSize/UnpSizeHigh (UINT)应该包含文件大小,但调用后两个值都为0。

怎么了?

您可以在上面的链接中找到 delphi 演示,尽管它需要稍作修改才能工作:

OpenArchiveData.ArcName    := ArcName;

这一定是

OpenArchiveData.ArcName    := NIL;   
OpenArchiveData.ArcNameW   := PChar(ArcName);

【问题讨论】:

  • 为什么将 NIL 设置为字符串类型?因为我不在我的开发机器上,所以我没有对其进行测试,但这可能是原因。
  • 不是直接回答您的问题,只是一种解决方法:否则您可以考虑使用 7Zip

标签: delphi rar


【解决方案1】:

不,DLL本身完全没有问题,如果你从this link下载Delphi组件包装器,安装它并尝试打开演示,一旦你打开一个RAR文件你会得到里面文件的大小正确:

所以,我可以说Delphi component wrapper for UnRar.dll by Philippe Wechsler 完全可以工作并且与 Delphi XE7 兼容(只需安装 D2009 软件包)。

【讨论】:

  • 谢谢,通过他的代码找到了问题,ArcName 和 Filename 必须是 AnsiChar 而不是 Char,这样就解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多