Delphi,olevariants和字符串数组

Chr*_*ase 0 arrays delphi ole delphi-7 variant

我有一个用简单的verion创建的ole对象

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

procedure TMyDM.DoOnResult(Res: olevariant);
Run Code Online (Sandbox Code Playgroud)

这一切都有效,res变量有一个函数String [] GetAns() 我就是这样调用的

var
 ans: array of string;
begin
 ans := Res.GetAns;
end;
Run Code Online (Sandbox Code Playgroud)

它再次有效..除非有时没有返回数组,然后抛出异常.

作为一个临时的解决方案我把它包裹在一个空的尝试,除了块,我知道是坏的.我已经尝试过 VarIsArray(Res.GetAns), 但如果结果为null,它仍然无法工作

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

ps我无法控制ole对象

RRU*_*RUZ 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;
Run Code Online (Sandbox Code Playgroud)