我正在使用Inno setup studio编写一个pascal函数,该函数检查一个对象是否为空,并执行一些操作
到目前为止,我有:
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脚本代码中检查对象是否为空?
发布于 2014-11-04 22:20:20
要检查Variant是否为NULL,请使用VarIsNull函数:
if VarIsNull(XMLNode) then然而,在您的情况下,问题稍微复杂一点。selectSingleNode方法总是返回一个varDispatch类型的变量,它的实际数据指针指向找到的XML节点,如果找不到这样的节点,则返回nil。在Delphi ( Inno Setup Pascal脚本编写语言)中,有一个VarIsClear函数,它也涵盖了这种情况。不幸的是,它没有在Inno Setup中发布。但是,您可以使用下面这样的语句来测试此案例:
if (IDispatch(XMLNode) = nil) then它将从返回的varDispatch变体中获取数据,并对nil进行数据测试。
Martijn在this commit的Inno Setup的Unicode版本中添加了VarIsClear函数,因此从Inno Setup 5.5.6开始,您可以使用VarIsClear而不是上面的技巧。
https://stackoverflow.com/questions/26737209
复制相似问题