次のような属性を持つ XML ノードがあります。
<pad name="E" x="2.5" y="7" drill="1.3"/>
を doubleに代入するとAttributes["x"]
、結果は 2.5 ではなく 25 になりますが、苦情やエラーは発生しません。
正しい変換を得るには、最初に属性を文字列に割り当て、小数点以下を置き換える必要があります '.' を 10 進数の ',' に変換してから、文字列を double に変換します。が変換できないことは明らかですが、Attribute["x"]
何も言いません! (バグ?!?)
変換に失敗したコードは次のとおりです。
double x = XMLNode->Attributes["x"];
これにより、2.5 ではなく 25 の誤った x が得られます。これが私の回避策です。
String sd = XMLNode->Attributes["x"];
if (sd.Pos(".")) sd[sd.Pos(".")] = ',';
double x = sd.ToDouble();
これにより、x (2.5) の正しい値が得られます。
これを行うには、もっと簡単な方法が必要です。
// ありがとう