У меня есть программа VB6, которая не работает на конкретной машине.
Суть проблемы заключается в следующем коде:
'this next line throws Type mismatch exception
If xml_file.documentElement.selectSingleNode("Node").Attributes.getNamedItem("InUse").nodeTypedValue Then
'do some stuff
End If
Программа использует MSXML4, и эта проблема возникает только на одной машине (пока), хотя она работает на многих других машинах. Кроме того, атрибут InUse определяется в схеме XML следующим образом:
<xs:attribute name="InUse">
<xs:simpleType>
<xs:restriction base="xs:boolean">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Еще одна вещь.
Если я распечатаю TypeName () этого выражения .nodeTypedValue, оно возвращается как «String». Поэтому неудивительно, что может произойти несоответствие типов. Но почему только на этой машине?
Поскольку я думаю об этом, на этой машине может быть установлен язык, отличный от других машин, которые я тестирую. Может ли это быть как-то связано с этим? Использует ли VB6 локаль, чтобы определить, как привести строку «false» в логическое значение? Если так, есть ли способ заставить его использовать английский?
Есть идеи?