簡體   English   中英

如何在Inno Setup Pascal腳本中檢查對象是否為NULL?

[英]How to check if an object is NULL in Inno Setup Pascal Script?

我正在使用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腳本代碼中檢查對象是否為空?

要檢查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變量中獲取數據,並將這些數據測試為nil


Martijn Laan在this commit中將VarIsClear函數添加到Inno Setup的Unicode版本,因此自Inno Setup 5.5.6起,您可以使用VarIsClear而不是上面的hack。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM