Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-1133505011
denmin
2005-12-02 09:30
2006.01.01
Как в Rave привязать RvRenderRTF1 так чтобы я мог сохранить RTF?


5-1119862403
Radgar
2005-06-27 12:53
2006.01.01
Создание компонентов


14-1134315152
Kerk
2005-12-11 18:32
2006.01.01
Какими не надо делать пользовательские интерфейсы.


11-1116100264
Thaddy
2005-05-14 23:51
2006.01.01
TlistEx?


14-1133960005
Ксардас
2005-12-07 15:53
2006.01.01
будущая Delphi2006 и Delphi7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский