use*_*er1 9 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
Run Code Online (Sandbox Code Playgroud)
但我一直在收到invalid variant operation错误.
如何在Inno Setup Pascal脚本代码中检查对象是否为空?
TLa*_*ama 12
为了检查,如果Variant是NULL使用VarIsNull功能:
if VarIsNull(XMLNode) then
Run Code Online (Sandbox Code Playgroud)
但是,在您的情况下,问题稍微复杂一些.该selectSingleNode方法始终返回一种类型varDispatch的变体,其实际数据指针指向找到的XML DOM节点,或者nil在没有找到此类节点的情况下返回.在Delphi(编写Inno Setup Pascal Script的语言)中,还有VarIsClear涵盖这种情况的功能.不幸的是,它没有在Inno Setup中发布.但是,您可以使用如下语句测试此案例:
if (IDispatch(XMLNode) = nil) then
Run Code Online (Sandbox Code Playgroud)
这将从返回的varDispatch变量和那些数据测试中获取数据nil.
Martijn Laan将这个VarIsClear功能添加到Inno Setup的Unicode版本中this commit,所以自从Inno Setup 5.5.6你可以使用VarIsClear而不是上面的hack.
| 归档时间: |
|
| 查看次数: |
7051 次 |
| 最近记录: |