Страница 1 из 1

Error, string is not float!

Добавлено: 29 ноя 2006, 19:42
Dr_Grizzly
Такая вот проблема, есть поле куда пользователь вводит вещественные числа, проблема в том, что на разных операционках, в зависимости от настройки, разные знаки разделения либо . либо , из-за этого прога просто вылетает.
Как можно узнать какой знак нужно ставить для разделения дробной части?
Или как можно заблокировать вывод этой ошибки, и просто поправить на противоположный знак?

Re: Error, string is not float!

Добавлено: 29 ноя 2006, 23:21
AiK
В Sysutils есть переменная с именем DecimalSeparator. В начале приложения задай ей нужный символ. Должно помочь.

Re: Error, string is not float!

Добавлено: 29 ноя 2006, 23:26
Хыиуду
Более аскетичный вариант: считывать из строки посимвольно в некий буфер символы, пока они числовые, потом пропустить все нечисловые, потом в другой буфер считать снова числовые. Получим отдельно целую и дробную часть. Правда, дробную еще надо разделить на 10 в соответствующей степени

Re: Error, string is not float!

Добавлено: 30 ноя 2006, 13:50
Лелик_1044
AiK писал(а):В Sysutils есть переменная с именем DecimalSeparator. В начале приложения задай ей нужный символ. Должно помочь.
ДА делай так допустим в cretaeform
DecimalSeparator:='.';

Re: Error, string is not float!

Добавлено: 01 дек 2006, 13:24
Dr_Grizzly
Отлично! А вот и решение:

на OnKeyPress пишем:

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

Гы, и тот и другой вариант в одном ;)