Delphi、olevariants 和字符串数组

发布于 2024-09-11 21:04:41 字数 521 浏览 6 评论 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) 但如果结果为 null,它仍然不起作用

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

ps 我无法控制 ole 对象

i have an ole Object created with (simple verion)

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

procedure TMyDM.DoOnResult(Res: olevariant);

which all works, the res variable has a function String[] GetAns()
which im calling like this

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

which again works.. except sometimes no array is returned, and then an exception is thrown.

as a temporary solution i have wrapped it in a empty try except block, which i know is bad. I have tried VarIsArray(Res.GetAns) but it still donst work if the result is null

What is the correct way check for the right result?

ps I have no control over the ole Object

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无可置疑 2024-09-18 21:04:41

Christopher 尝试使用 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;

Christopher try using the VarIsNull function

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文