Я пытаюсь записать в xml-файл, но у меня возникают трудности с обработкой чисел с плавающей запятой, поскольку они используют запятую (,) в качестве десятичного разделителя, хотя мои региональные настройки заданы как точка (.) для десятичного разделителя. У меня такая проблема в Windows Server 2012, но в Windows XP я этого не испытываю.Числа с плавающей запятой - Десятичный разделитель
GetLocaleFormatSettings(GetThreadLocale, LocalFormatSettings);
LocalFormatSettings.DecimalSeparator := '.';
SHElem := xml.Root.Items.Add('SalesHeader');
with SHElem do begin
Items.Add('STORENUMBER', ssCurrentStoreNumber);
case VarType(Dataset.FieldByName('Amounts').asFloat) of
varCurrency : Items.Add('Amounts', FloatToStr(Dataset.FieldByName('Amount').asFloat,LocalFormatSettings));
else
Items.Add('Fields', Dataset.FieldByName('Fields').AsString);
end
end;
Как вы записываете числа с плавающей точкой в файл XML? Пожалуйста, покажите соответствующий фрагмент кода. – dlask
Если это значение в $/cent, и вы контролируете как читателя, так и автора, вы можете позволить поле быть выраженным в центах вместо $ (т. Е. Умножить значение на 100, чтобы получить целое число для хранения в XML, а затем разделите его на 100 на принимающей стороне). Таким образом, вы независимы от фактического децимального разделителя (поскольку его нет). – HeartWare
Если вы используете Delphi 'TXMLDocument' для записи, вам, возможно, придется писать поплавки в виде строки и использовать метод, описанный @DavidHeffernan. Обратите внимание, что даты/время также требуют специальных процедур, поскольку Delphi не соответствует стандартам XML-схемы в 'TXMLDocument'. –