Не прошло и пол года как я обновил таки лазарус до 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!!!!