为什么选择COM Object向导建立的COM,他的Type Library中的参数定义不同于选择Automation Object的类型库的??谢谢(100分

  • 主题发起人 主题发起人 blackfiles
  • 开始时间 开始时间
B

blackfiles

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么选择COM Object向导建立的COM,他的Type Library中的参数定义不同于选择Automation Object的类型库的??谢谢(100分)<br />我想比较由ActicveX里的COM Object 与 Automation Object的异同,于是分别建立了他们两个的DLL,
在COM Object的类型库中的接口里,我定义了两个方法:
1, one: 没有任何参数。代码自动生成:
function TComTest.one: HResult;
begin
end;
2,two 定义了参数(我想让他简单返回一个字符窜):result BSTR* [out,retval],生成代码:
function TComTest.two(out result: WideString): HResult;
begin
result:='ComTest';
end;

编译后报错:
1.Return Value of function 'TComTest.one' might be undefined
2.Identifier redeclared :'Result';
3.Incompatible types:'HRESULT'and 'String'
请问这些错误是怎么产生的?(而在Automation Object中的类型库同样定义,却没有错。)
而且在one时,应该是个procedure啊,他们不同定义么?
请问要想实现我的方法,在COM Object中的方法参数应该怎样定义呢?
 
我用autoobject可以生成procedure的代码啊
就添加Method,设置了名称后,什么也不改就会
procedure TComTest.Test
begin

end;
 
我是说在COM Object的里面,
在Auto Object的里面是没问题的。
 
function TComTest.two(out para: WideString): HResult;
begin
para:='ComTest';
end;

result不能用,是系统保留字。改用para就可以了。
出错信息不写了吗?result redelared.
 
后退
顶部