Поиск блогу

пятница, 29 мая 2009 г.

Точка, точка, запятая...

Все тот же Delphi, все таже программа для студентов. Написал, быстренько протестил - вроде все работает. И отправил на согласование. Жду лестных отзывов. А отзывы приходят совсем неожидаемые.

Не работают увеличение/уменьшение дробный чисел. Почему? Ведь там все предельно просто:
Edit.text:=floattostr(a-0.01);

Стал разбираться. Оказалось функция floattostr работает косячно. И очень зависит от настроек винды. Если винда настроена на точку, то дробным число она считает с точкой, если на запятую, то дробные числа с запятой, а с точкой это слово. Все вроде бы ничего. Но на событии OnChange есть процедура val, которая работает исключительно с точкой.
В итоге, так как уменя все на точку настроено, то глюков у меня нет. А вот на компе согласование настроено на запятую. И при увеличении там значения, val думает, что это текст, выдаёт ошибку и возвращает предыдущие значение, но через тот же floattostr. Система зациклилась, увеличение/уменьшение не работает.

Решение этой проблемы банальное, меняем принудительно точку на запятую, а это на каждый вывод чисел дополнительно надо вешать Stringreplace. Опять получается громоздко. А все почему? Поточу что кт0-то не может прийти к единому мнению как писать дробные числа с точкой или запятой... Не правильно это...

Комментариев нет:

Отправить комментарий