Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.01;
Скачать: CL | DM;

Вниз

Десятичная точка   Найти похожие ветки 

 
kreyl   (2005-12-13 01:06) [0]

Подскажите, пожалуйста, как быть с преобразованием строковых данных вида "1.0", "4.5" и т.п. в число? FloatToStr прекрасно работает, если в региональных установках винды десятичным знаком указана точка. А на другой винде, где десятичный знак - запятая, не работает.
Строковые данные менять нельзя.

Как устранить проблему? Заранее спасибо.


 
FloatToStr   (2005-12-13 01:24) [1]


procedure TForm1.FormCreate(Sender: TObject);
var s,s1:string;    i,k:real;
begin
 s:="1.01";

 if pos(".",s)>0 then
 begin
   insert(",",s,pos(".",s));
   delete(s,pos(".",s),1);
 end;

 i:=strtofloat(s);
 caption:=floattostr(i);
end;


 
Джо ©   (2005-12-13 01:26) [2]

DecimalSeparator := твой разделитель.


 
Alexander Panov ©   (2005-12-13 01:34) [3]

>FloatToStr   (13.12.05 01:24) [1]

Лучше DestFloat := StrToFloat(StringReplace(StringReplace(SrcStr, ".", DecimalSeparator,[]),",",DecimalSeparator,[]));


 
Джо ©   (2005-12-13 01:45) [4]


>  [3] Alexander Panov ©   (13.12.05 01:34)
> [1] FloatToStr   (13.12.05 01:24)

А зачем вы так мучаетесь?
Просто установить DecimalSeparator в точку при старте программы и FloatToStr будет автоматически переводит числа "1.0", "4.5" независимо от настроек системы.


 
Alexander Panov ©   (2005-12-13 07:28) [5]

>Джо ©   (13.12.05 0 1:45) [4]

Так у меня, например, числа в строковом виде чаще всего поступают из внешних систем, с других компьютеров -)


 
Anatoly Podgoretsky ©   (2005-12-13 08:40) [6]

Джо ©   (13.12.05 01:45) [4]
Это не мучение, а правильный подход.
DecimalSeparator это глобальная переменная, не потоко безопасная и работает только внутри Дельфи, а функции могут использоваться и из АПИ, поэтому это более безопасный и более гарантируемый путь.


 
Плохиш ©   (2005-12-13 11:34) [7]


> Джо ©   (13.12.05 01:45) [4]
> А зачем вы так мучаетесь?
> Просто установить DecimalSeparator в точку при старте программы

Мучения начнутся после того, как вындовс сообщит всем приложениям о необходимости обновить локальные настройки ;-)


 
Игорь Шевченко ©   (2005-12-13 11:44) [8]

На работу StrToFloat влияют только переменные DecimalSeparator и т.п.
смотреть можно в ffmt.asm.
Поэтому установка DecimalSeparator в требуемое значение перед преобразованием решает проблему.


 
Anatoly Podgoretsky ©   (2005-12-13 13:09) [9]

Игорь Шевченко ©   (13.12.05 11:44) [8]
Не решает, это глобальная переменная, со всеми вытекащими от сюда проблемами, будут они у него или нет другой вопрос.



Страницы: 1 вся ветка

Текущий архив: 2006.01.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
2-1134640643
Uzver
2005-12-15 12:57
2006.01.01
Как открыть файл?


14-1133884054
ПЛОВ
2005-12-06 18:47
2006.01.01
Посоветуйте программу


14-1133840469
аРТ
2005-12-06 06:41
2006.01.01
Заберите меня на другую работу!! ААААААААААаааааааа


8-1121459577
ronyn
2005-07-16 00:32
2006.01.01
DS Pack


14-1134312985
wicked
2005-12-11 17:56
2006.01.01
APE.CUE vs всё остальное...