Delphi调用VC++写的接口, 求教! 300块!!!(300分)

  • 主题发起人 主题发起人 liuge
  • 开始时间 开始时间
L

liuge

Unregistered / Unconfirmed
GUEST, unregistred user!
SvrManager ,SrvCmd , SvrValue是VC++写的COM对象,看下面的代码:
Var SvrManager ,SrvCmd , SvrValue:Varaint;
begin
SvrManager:=CreateOleObject('APPServerIF.AppServerManager'); //创建SvrManager
SrvCmd:=SvrManager.CreateMethodCall; //创建SrvCmd
SvrValue := SvrManager.CreateValue; //创建SvrManager

SvrValue.SetLong(21); //调用SvrValue的一个方法,成功

SrvCmd.SetParameter('abc',SvrValue); //调用SrvCmd的SetParameter方法,失败!!!
end;

运行到SrvCmd.SetParamete时,报"不正确的变量类型"错误.
SetParameter的第二个参数要求一个IDispatch, 我希望把SvrValue传进SetParameter
处理. 但VC++写的接口方法中只要有IDispatch的类型,我在Delphi中调用就不成功.
 
>但VC++写的接口方法中只要有IDispatch的类型,我在Delphi中调用就不成功.
应该为:
但VC++写的接口方法的参数列表中只要有IDispatch的类型,我在Delphi中调用就不成功.
 
你可以用前期绑定啊!
或者用类型强制转换试一下……
 
东兰梦舞,请详细点,可以再加300分
强制类型转换也不行,我产生xxxx_TLB.PAS ,按照Setparameter的类型进行强制转换,一样的错误,也是再运行时报
 
我蒙一下
var
pstr:pchar;
---------
pstr:='abc';
SrvCmd.SetParameter(pstr,SvrValue); //调用SrvCmd的SetParameter方法,失败!!!
 
第一个参数没问题, 我在其他要求字符串参数的方法中用字符串常量调用正常.
 
没调过VC的
 
不是 IDispatch,传递接口参数必须用 IDispatch* 类型.
 
问题解决了.
不是接口调用的问题,是VC实现SetParameter中的代码有问题(编译器不能发现,运行时引发错误).

感谢几位的回答,分了!
 
多人接受答案了。
 
后退
顶部