首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Inno Setup Pascal脚本中检查对象是否为空?

问如何在Inno Setup Pascal脚本中检查对象是否为空?
EN

Stack Overflow用户
提问于 2014-11-04 22:09:10
回答 1查看 9.3K关注 0票数 10

我正在使用Inno setup studio编写一个pascal函数,该函数检查一个对象是否为空,并执行一些操作

到目前为止,我有:

代码语言:javascript
复制
XMLDocument.setProperty('SelectionLanguage', 'XPath');
XMLNode := XMLDocument.selectSingleNode(APath);
if (XMLNode=Null) then
begin
//do stuff
End
Else
//do other stuff
End

但我一直收到invalid variant operation错误。

如何在Inno Setup Pascal脚本代码中检查对象是否为空?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 22:20:20

要检查Variant是否为NULL,请使用VarIsNull函数:

代码语言:javascript
复制
if VarIsNull(XMLNode) then

然而,在您的情况下,问题稍微复杂一点。selectSingleNode方法总是返回一个varDispatch类型的变量,它的实际数据指针指向找到的XML节点,如果找不到这样的节点,则返回nil。在Delphi ( Inno Setup Pascal脚本编写语言)中,有一个VarIsClear函数,它也涵盖了这种情况。不幸的是,它没有在Inno Setup中发布。但是,您可以使用下面这样的语句来测试此案例:

代码语言:javascript
复制
if (IDispatch(XMLNode) = nil) then

它将从返回的varDispatch变体中获取数据,并对nil进行数据测试。

Martijn在this commit的Inno Setup的Unicode版本中添加了VarIsClear函数,因此从Inno Setup 5.5.6开始,您可以使用VarIsClear而不是上面的技巧。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26737209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档