0

我有一个用(简单版本)创建的 ole 对象

obj := CreateOleObject('foo.bar');
obj.OnResult := DoOnResult;

procedure TMyDM.DoOnResult(Res: olevariant);

一切正常, res 变量有一个函数String[] GetAns() ,我像这样调用

var
 ans: array of string;
begin
 ans := Res.GetAns;
end;

这又有效..除了有时没有返回数组,然后抛出异常。

作为临时解决方案,我将它包装在一个空的 try except 块中,我知道这是不好的。我试过 VarIsArray(Res.GetAns) 但如果结果为空,它仍然不起作用

检查正确结果的正确方法是什么?

ps 我无法控制 ole 对象

4

1 回答 1

5

克里斯托弗尝试使用该VarIsNull功能

procedure TMyDM.DoOnResult(Res: olevariant);
var
 ans: array of string;
begin
 if not VarIsNull(Res) then 
 if not VarIsNull(Res.GetAns) then
 begin
  ans := Res.GetAns;
  //do your stuff

 end;

end;
于 2010-07-28T03:06:07.173 回答