![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FloatToStr и TFormatSettings - проблема с ThousandSeparator [D7, WinXP]
Undertaker-wwf © (2007-02-22 19:16:00)Хочу преобразовать число с плавающей точкой в строку, и чтобы "разделитель тысяч" был, например, '.' (точка).
Делаю это так:
procedure TMyCalcForm.SetIndicatorValue(Value: Double);
var
StringValue: string;
FormatSettings: TFormatSettings;
begin
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FormatSettings);
FormatSettings.DecimalSeparator := ',';
FormatSettings.ThousandSeparator := '.';
StringValue := FloatToStr(Value, FormatSettings);
IndicatorMemo.Text := StringValue;
end;
Если вызватьSetIndicatorValue(12109810.05);
то IndicatorMemo.Text будет содержать '12109810,05', т. е. не то что я ожидаю. В чём дело? Смотрел код функции FloatToStr - в ней стоит вызов фунции FloatToText, которая написана на ассемблере. В ассемблере я почти не разбираюсь и не могу отследить логику работы FloatToText.
Johnmen (2007-02-22 22:53:00) [1]Не парь себе мОзги...
procedure TMyCalcForm.SetIndicatorValue(Value: Double);
var
SaveDecimalSeparator, SaveThousandSeparator : char;
begin;
SaveDecimalSeparator:=DecimalSeparator;
SaveThousandSeparator:=ThousandSeparator;
DecimalSeparator:=',';
ThousandSeparator:='.';
IndicatorMemo.Text:=FormatFloat('#,##0.00',Value);
DecimalSeparator:=SaveDecimalSeparator;
ThousandSeparator:=SaveThousandSeparator;
end;