Delphi5中COM对象接口实现的method只能支持HRESULT返回类型?别的返回类型都不支持?(100分)

  • 主题发起人 主题发起人 france
  • 开始时间 开始时间
F

france

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi4中COM对象接口实现的method可以为各种类型,
但Delphi5中只能支持HRESULT返回类型,
如果返回类型设置为别的,则不能保存,并报错,
(并且返回HRESULT类型的method均为procedure
而非function.)
那要返回别的类型怎么办?
 
你要想返回数据,可以设定调用参数为out类型
hresult类型主要是表示com调用后是否成功的信息
 
把参数设置为out类型
最好只返回win32的标准类型
 
错了,各位
在Delphi IDE中设置TLB编辑界面,将语言设置为Object pascal即可
 
没有错。
改语言是方便了些。不改语言也一样做。
在Modifier中勾上 out 和 retval,
在Type中选择一种数据类型,如long,后面跟一个*号就可以了。
保存后看看,是一个function,返回值integer。
 
Delphi5 安装后的TypeLib却省设置是为C++设置的,你在Environment Options
中重新设置一下Type Library的选项Language为Pascal然后在试验一下看看吧
 
缺省可不是c++,那叫idl,接口描述语言!
 
返回HRESULT并不一定是PROCEDURE,COM编写标准是要求返回必须为HRESULT,是为
了在COM异常时不影响其它的系统运行,WINDOWS在处理COM时的内存管理,有其特殊
的地方,想返回其它值,请用OUT前缀
 
非常留意的听...
 
I Want To Know Too!
 
哦怪不得,我怎么觉的那些类型怪怪的,一气之下,全用variant了
 
是不是type library 中的语言最好改为pascal?
 
这到不一定,看你熟悉哪种了,反正我是觉得pascal好一些,
其实都是一样的
 
safecall 内部要用 HRESULT 返回类型
在Modifier中only勾上 out 和 retval,
在Type中选择一种数据类型,如long,后面跟一个*号就可以了。
保存后看看,是一个function,返回值integer。
 
也碰到过,不过有OUT就行了,没有必要去改吧!
当然我也喜欢去改动。
 
多人接受答案了。
 
后退
顶部