ActiveX和MCVE出错

时间:2015-08-31 04:13:36

标签: delphi delphi-xe8

在我搜索S_OK返回错误而不是S_FALSE(参见我之前的消息)时,我发了一个非常小的服务器,只有一个方法发送S_FALSE(HResult类型),不幸的是我有一个错误小客户端程序:项目TestTest.exe发送了异常类EOleSysError,消息“变量类型无效”(它是引发错误的指令Return:=coll.Method)。 任何的想法? .ridl 服务器代码:

function TTest1.Method: HResult;
begin
  Result:=S_FALSE;
end;

和客户端代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  coll:variant;
  Return:HResult;
begin
  coll:= CreateOLEObject('Project.Test1');
  Return:=coll.Method;
  if Return=S_FALSE then showmessage('OK') else showmessage('ERROR!!!!!!!!!!!!!!!!');
end;

我已经完成了MCVE的全部问题: 服务器:enter link description here 客户:enter link description here

2 个答案:

答案 0 :(得分:0)

我认为您不需要参数' value'类型为HRESULT。您可以删除该参数:该方法已经返回HRESULT。如果您想使用参数进行测试,请尝试更改' value'到BSTR [in]并传递任何字符串。它应该工作。

Return:=coll.Method('place the parameter string here');

干杯

答案 1 :(得分:0)

我不知道为什么你坚持使用HRESULT来返回值,为什么你不创建带有参数HRESULT的{​​{1}} METHOD然后返回你想要的东西。