我已阅读CodeAutomation.iss和其他一些来源,但我找不到答案......
使用提供的示例,xml对象被放入“Variant”类型的变量中。我认为这只相当于'var'。
但是,当我在执行nil
后尝试检查这样的变量是否为selectSingleNode
时,编译器会抱怨“类型不匹配”。
有没有办法检查这样的节点提取是否失败?如果Inno什么都没找到,它又会回归什么呢?
答案 0 :(得分:3)
您可以使用VarIsNull
函数测试Variant变量。
答案 1 :(得分:1)
只需检查节点长度结果。此示例通过XPath
按属性名称选择节点XMLDocument.setProperty('SelectionLanguage', 'XPath');
XMLNode := XMLDocument.selectNodes('//' + ANodeName + '[@name="' + AttName + '"]');
if (XMLNode.Length <= 0) then
begin
XMLNode := XMLDocument.selectSingleNode(APath);
NewNode := XMLDocument.createElement(ANodeName);
NewNode.setAttribute['type'] := AttrType;
NewNode.setAttribute['name'] := AttName;
NewNode.setAttribute['value'] := AttrValue;
XMLNode.appendChild (NewNode);
XMLNode.lastChild.text := ANodeText;
XMLDocument.save(AFileName);
end;