0

小数点が常に'.'あり、コンピューターのローカルがこれと異なる場合がある XML ドキュメントの属性フィールドを読み取っています (私の場合は です',')。

FormatSettings.DecimalSeparatorグローバルをに設定しようとしまし'.'たが、XML パーサーには影響しません。これは問題の非常に圧縮されたバージョンです。

_di_IXMLDocument Document;
_di_IXMLNode     Node;
float            Value;

Document = LoadXMLDocument("Test.xml");
Node = Document->DocumentElement;
FormatSettings.DecimalSeparator = '.';
Value = Node->GetAttribute("scale");

この XML ファイルを想定します。

<?xml version="1.0" encoding="utf-8"?>
<myroot scale="1.234">
</myroot>

属性スケールを読み取った後、常に「。」にストライプされた結果が得られます。値 = 1.234 ではなく 1234 になります。

小数点以下の桁数は一定ではなく、1 か 4、またはその間の任意の数になります。これは全体にも当てはまるので、100や1000で割っても問題は解決しません。

OLEVariant を'.'小数点として受け入れることをお勧めします (私のローカルは です',')。

私は見ましたが、これはすべてSetLocalInfo()のアプリケーションのフォーマットを設定します。関数は現在のスレッドを操作しますが、使用する文字を明示的に指定する方法が見つかりませんでした。国のように、コードページまたはローカリゼーションのみを選択できるようです。getlocale()

EDITローカライズとして使用して選択
しようとしました。US が小数点記号として使用されていても、XML パーサーはこれを無視しているようです。setlocal()English-US'.'

XML ファイルでを手動で'.'aに変更すると、正常に動作します。','しかし、XML ファイルはサード パーティのファイルであり、私には制御できません。'.'だから私は本当に小数点区切りでそれをそのまま読む必要があります

4

1 に答える 1