我正在使用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
但我一直得到无效的变种操作错误.
如何在Inno Setup Pascal脚本代码中检查对象是否为空?
解决方法
要检查Variant是否为NULL,请使用
VarIsNull
函数:
if VarIsNull(XMLNode) then
但是,在您的情况下,问题稍微复杂一些. selectSingleNode
方法始终返回类型varDispatch
的变体,其实际数据指针指向找到的XML DOM节点,或者在没有找到此类节点的情况下返回nil.在Delphi(编写Inno Setup Pascal Script的语言)中,有VarIsClear
功能也涵盖了这种情况.不幸的是,它没有在Inno Setup中发布.但是,您可以使用如下语句测试此案例:
if (IDispatch(XMLNode) = nil) then
这将从返回的varDispatch
变体中获取数据,并将这些数据测试为零.
Martijn Laan在this commit
中将VarIsClear函数添加到Inno Setup的Unicode版本中,因此自Inno Setup 5.5.6起,您可以使用VarIsClear而不是上面的hack.