Проблема десятичной точки под виндой [РЕШЕНО]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблема десятичной точки под виндой [РЕШЕНО]

Сообщение vada » 25.08.2011 15:38:10

Не прошло и пол года как я обновил таки лазарус до 0.9.30. Ибо проект заказчику сдал.

Засунул под 0.9.30 свой проект, и... естессено, ничего не работает.
Про танцы с бубном по поводу UTF8 рассказывать не буду. Функций UTF8Encoder и UTF8Decoder стало несколько и компилятор в недоумении какую в данном случае пользовать. Это почини. Порядка сотни исправлений в коде. :( А оно мне надо?

Но осталась нерешенной проблема с десятичной точкой.
Дело в следующем, что в версии лазаруса 0.9.29 для функции StrToFloat не было разницы строка с точкой или запятой. Это меня устраивало по двум причинам:
1 - в инженерных расчетах принята десятичная точка. Обмен данными между различными программами идет текстовыми файлами в которых числа с десятичной точкой. Мне этот файл читать и преобразовывать.;
2 - в винде, по умолчанию, для русской локали используется десятичная запятая. И если я в своей программе делаю FloatToStr то получаю строку с запятой. Обратное преобразование в Real проблем не вызывало. Функции StrToFloat можно было подсунуть что угодно, хоть с точкой, хоть с запятой. Молча преобразовывалось в Real. Даже если в настройках винды указывали что десятичные разряды разделяют точкой, все у меня прекрасно работало.

В лазарусе 0.9.30 все починили (вернее поломали). Теперь если в локали установлена запятая, преобразовать строку с точкой в Real не удастся. И наоборот, если в локали точка, то срока с запятой не катит.

Чё делать то? Настройки локали у пользователей у каждого своя. А хочется чтоб работало у всех.
Может есть какаято фича в лазарусе для определения чего там в текущей локале в качестве разделителя настроено? Сам найти не смог. Может многоуважаемый ALL знает?

HELP!!!!
Последний раз редактировалось vada 25.08.2011 16:15:43, всего редактировалось 1 раз.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Проблема десятичной точки под виндой

Сообщение Mr.Smart » 25.08.2011 16:09:48

Код: Выделить всё
initialization
  DecimalSeparator:='.';

end.   
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Проблема десятичной точки под виндой

Сообщение vada » 25.08.2011 16:15:18

Опа!!!!!!!!!!!!
Спасибо! Заработало!
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Проблема десятичной точки под виндой [РЕШЕНО]

Сообщение Widowmaker » 25.08.2011 18:42:58

Mille grazie!!!
Мучала та ж ботва. С горя начал было самопальный парсер ваять... :lol:
Аватара пользователя
Widowmaker
новенький
 
Сообщения: 37
Зарегистрирован: 27.04.2011 18:32:04

Re: Проблема десятичной точки под виндой [РЕШЕНО]

Сообщение Frolik » 31.08.2011 10:57:14

куда это вписывать?
Frolik
постоялец
 
Сообщения: 275
Зарегистрирован: 18.08.2011 11:52:32

Re: Проблема десятичной точки под виндой [РЕШЕНО]

Сообщение Андрей Варкентин » 31.08.2011 11:46:02

Я пишу в исходный код проекта (.lpr) сразу после "begin":
Код: Выделить всё
begin
  SysUtils.DecimalSeparator:='.';
...
end. 
Андрей Варкентин
новенький
 
Сообщения: 21
Зарегистрирован: 17.09.2010 11:56:14


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru