Главная страница
    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.46 MB
Время: 0.009 c
8-1122897689
MixAnOL
2005-08-01 16:01
2006.01.01
Определение длины звучания


1-1133863473
general
2005-12-06 13:04
2006.01.01
Вопрос по мышиному колесу


4-1129750550
JJohn
2005-10-19 23:35
2006.01.01
процессы и потоки...


6-1127143461
KLAUS
2005-09-19 19:24
2006.01.01
POP3- возникает ошибка!"


2-1134660329
Acrob@t
2005-12-15 18:25
2006.01.01
тестирующая программа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский