我在远程数据模块中,增加一个带返回值的方法但系统提示funtions of automation interfaces must have a return type of HRESULT。
难到一定要用HRESULT吗? 那在什么情况才能用其它返回值呀?不能用返回值很麻烦的。
还有我试过在Modifier 设为 [in,out]也不行,为什么呀? 能解决吗?

解决方案 »

  1.   

    在Modifier 设为 [out, RetVal]。注意这个参数一定要是最后一个,而且必须是指针类型,如返回widestring结果,参数需要设置为BSTR *类型
      

  2.   

    这个实际上是IDL的问题,与Pascal不同。自动化接口的返回值必须是一个HRESULT,但这并不影响Delphi的表达。你照我的方法设置一下参数,然后看看Delphi自动生成的代码,就明白了。
      

  3.   

    增加一个参数为 vResult,类型为 Variant* ,Modifier 为[in, out] 的参数必须为一个指针类型
      

  4.   

    学习,顺便问一下 Miracle() ,接口方法好像无法返回自定义类型对吗?有什么替代方法吗?
      

  5.   

    接口方法不太好返回自定义类型,但作为替代方式,可以返回变体数组(variant array)、接口或者XML(描述复杂数据)