C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: StrToFloat не работает  (Прочитано 2040 раз)
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


StrToFloat не работает
« : 18 Март 2015, 16:40:26 »

double temperature = 0;
temperature = StrToFloat(JsonMemberArraySensValue);
В точке останова вижу JsonMemberArraySensValue = "24.31"
Однако ошибка конвертации. Как исправить?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: StrToFloat не работает
« Ответ #1 : 18 Март 2015, 16:50:43 »

Значит у тебя в настройках региональных десятичная точка - это запятая )))
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: StrToFloat не работает
« Ответ #2 : 18 Март 2015, 16:53:43 »

заменить на запятую "24,31"

или добавить в коде
Код
DecimalSeparator = '.';
temperature = StrToFloat(JsonMemberArraySensValue);
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


Re: StrToFloat не работает
« Ответ #3 : 18 Март 2015, 17:03:56 »

А как добавить правильно DecimalSeparator?
[bcc32 Error] Unit1MainForm.cpp(197): E2451 Undefined symbol 'DecimalSeparator'

и как затем вернуть DecimalSeparator обратно?
Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


Re: StrToFloat не работает
« Ответ #4 : 18 Март 2015, 19:13:13 »

Вроде так:
Код
               wchar_t FS = FormatSettings.DateSeparator;
try
{
 FormatSettings.DecimalSeparator = '.';
 double d = 0;
 JsonMemberArraySensValue = StringReplace(JsonMemberArraySensValue, ",", ".",TReplaceFlags()rfReplaceAllrfIgnoreCase);
 bool chek = TryStrToFloat(JsonMemberArraySensValue,d);
 if(chek)
temperature = d;
 }
 __finally
{
FormatSettings.DateSeparator = FS;
}
 
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #5 : 19 Март 2015, 08:48:38 »

Вот не надо так.. мало ли что в текстовом отображении плавучки будет в других потоках.
Лучше в своем тексте замену сделай:
Код
s = StringRaplace(s, ".", ",", rfReplaceAll)
« Последнее редактирование: 19 Март 2015, 11:10:30 от POV » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.064 секунд. Запросов: 19.