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

时间:2014-11-04 14:09:10

标签: inno-setup pascalscript

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

到目前为止,我有:

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脚本代码中检查对象是否为空?

1 个答案:

答案 0 :(得分:11)

要检查Variant NULL是否if VarIsNull(XMLNode) then 使用VarIsNull功能:

nil

但是,在您的情况下,问题稍微复杂一些。 selectSingleNode方法始终返回类型为varDispatch的变体,其实际数据指针指向找到的XML DOM节点,如果未找到此类节点,则返回if (IDispatch(XMLNode) = nil) then 。在Delphi(编写Inno Setup Pascal Script的语言)中,VarIsClear函数也涵盖了这种情况。不幸的是,它没有在Inno Setup中发布。但是,您可以使用如下语句测试此案例:

nil

这将获取返回的varDispatch变体中的数据以及VarIsClear的数据测试。


Martijn Laan在this commit中将VarIsClear函数添加到Inno Setup的Unicode版本中,因此自Inno Setup 5.5.6起,您可以使用{{1}}代替上述hack。