Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо