特定のマシンで失敗する 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 を使用しており、この問題は (今のところ) 1 台のマシンでのみ発生しますが、他の多くのマシンでも機能します。さらに、InUse 属性は XML スキーマで次のように定義されています。
<xs:attribute name="InUse">
<xs:simpleType>
<xs:restriction base="xs:boolean">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
もう一つ。
その .nodeTypedValue 式の TypeName() を出力すると、「文字列」として返されます。したがって、型の不一致が発生する可能性があることはそれほど驚くべきことではありません。しかし、なぜその 1 台のマシンだけでしょうか?
考えてみると、そのマシンの Locale は、テストしている他のマシンとは異なる言語に設定されている可能性があります。それと何か関係があるのでしょうか?VB6はロケールを使用して、文字列「false」をブール値に強制する方法を決定しますか? もしそうなら、強制的に英語を使う方法はありますか?
何か案は?