2014-09-23 47 views
0

用winrar的免费unrar.dll的应用:http://www.rarlab.com/rar_add.htm和XE7德尔福unrar.dll报告错误包装尺寸

for Windows软件开发

UnRAR.dll的UnRAR动态库

当我列出一个RAR内容(它里面的文件列表)的文件名是正确的,但是报告的大小总是0.他们自己的Delphi演示也是这样做的,我怀疑它是很久以前用Delphi的老版本制作的。

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

怎么了?

你可以在上面的链接德尔福的演示,但它需要一个小的修改,它的工作:

OpenArchiveData.ArcName := ArcName; 

这一定是

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

你为什么把NIL设置为字符串类型?我没有测试过它,因为我不在我的开发机器上,但这可能是原因。 – SilverWarior 2014-09-23 06:52:11

+0

不是一个直接的答案给你的问题只是一个解决方法:否则你可以考虑使用7Zip – 2014-09-23 08:47:22

回答

2

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

Example

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

+0

谢谢,由于他的代码发现问题,ArcName和Filename必须是AnsiChar而不是Char,它修复了它。 – hikari 2014-09-23 11:29:56