Error, string is not float!

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Такая вот проблема, есть поле куда пользователь вводит вещественные числа, проблема в том, что на разных операционках, в зависимости от настройки, разные знаки разделения либо . либо , из-за этого прога просто вылетает.
Как можно узнать какой знак нужно ставить для разделения дробной части?
Или как можно заблокировать вывод этой ошибки, и просто поправить на противоположный знак?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

В Sysutils есть переменная с именем DecimalSeparator. В начале приложения задай ей нужный символ. Должно помочь.
Даже самый дурацкий замысел можно воплотить мастерски
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Более аскетичный вариант: считывать из строки посимвольно в некий буфер символы, пока они числовые, потом пропустить все нечисловые, потом в другой буфер считать снова числовые. Получим отдельно целую и дробную часть. Правда, дробную еще надо разделить на 10 в соответствующей степени
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

AiK писал(а):В Sysutils есть переменная с именем DecimalSeparator. В начале приложения задай ей нужный символ. Должно помочь.
ДА делай так допустим в cretaeform
DecimalSeparator:='.';
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Отлично! А вот и решение:

на OnKeyPress пишем:

If key=',' or '.' then
key:=DecimalSeparator;

Гы, и тот и другой вариант в одном ;)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить