我应该在Delphi中使用哪个版本的IMalloc?

Roi*_*ise 3 delphi shell types delphi-xe

我正在尝试在Delphi XE中重构Delphi 5项目,为此我需要在一个名为BrowseDr的单元中修复一些错误.我得到的错误是

[DCC Error] BrowseDr.pas(1033): E2033 Types of actual and formal var parameters
 must be identical

line 1033:   SHGetMalloc(FShellMalloc);
Run Code Online (Sandbox Code Playgroud)

"MyShlObj":

//SHGetMalloc declaration 
function SHGetMalloc(var ppMalloc: IMalloc): HResult; stdcall;
Run Code Online (Sandbox Code Playgroud)

现在,在FShellMalloc声明中使用的IMalloc源自OLE2.IMalloc "MyShlObj"中使用的IMalloc ActiveX.IMalloc.

有可能改变其中一个吗?如果是的话,是否推荐?

RRU*_*RUZ 7

OLE2单元由较旧的Delphi版本使用,该单元已由该ActiveX单元替换,因此现在您必须使用ActiveX新项目中的 类型.

  • 注意:您可以显式限定类型(ActiveX.IMalloc)或确保ActiveX单元在uses子句中是第一个,但由于后一个解决方案很脆弱,我建议明确限定它. (2认同)