Delphi Unar.dll报告错误的压缩大小

Delphi Unar.dll报告错误的压缩大小,delphi,rar,Delphi,Rar,为应用程序和XE7使用winrar的免费软件unrar.dll UNRR.dll用于Windows软件开发人员的UNRR动态库 当我列出rar内容(其中的文件列表)时,文件名是正确的,但是报告的大小始终为0。他们自己的Delphi演示也能做到这一点,我怀疑它是很久以前用一个更旧的Delphi版本制作的 调用RARReadHeaderEx(hArcData,HeaderData)后,HeaderData UnpSize/UnpSizeHigh(UINT)应包含文件大小,但调用后这两个值始终为0 怎

为应用程序和XE7使用winrar的免费软件unrar.dll

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

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

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

怎么了

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

OpenArchiveData.ArcName    := ArcName;
这一定是

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

不,DLL本身没有任何问题,如果您从下载Delphi组件包装器,安装它并尝试打开演示,一旦打开RAR文件,您将获得正确的文件大小:


因此,我可以说Philippe Wechsler为unrr.dll编写的
Delphi组件包装器
完全可以工作,并且与Delphi XE7兼容(只需安装D2009包)。

为什么要将NIL设置为字符串类型?我没有测试它,因为我不在我的DEV机器上,但这可能是原因。不是直接的回答你的问题只是一个解决办法:否则你可以考虑使用7ZIPHORY,发现这个问题多亏了他的代码,AcNeX和文件名必须是ANSICAR而不是CHAR,这是固定的。