在我搜索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
答案 0 :(得分:0)
我认为您不需要参数' value'类型为HRESULT
。您可以删除该参数:该方法已经返回HRESULT
。如果您想使用参数进行测试,请尝试更改' value'到BSTR
[in]并传递任何字符串。它应该工作。
Return:=coll.Method('place the parameter string here');
干杯
答案 1 :(得分:0)
我不知道为什么你坚持使用HRESULT
来返回值,为什么你不创建带有参数HRESULT
的{{1}} METHOD然后返回你想要的东西。