| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > В программе не работает функция |
| Автор: sashPav 8.7.2010, 22:48 | ||
| Пожалуйста помогите разобраться. Ниже приведен код программы Следующая программа вычисляет стоимость поездки на дачу. Исходными данными для программы являются: расстояние, цена одного литра бензина и потребление бензина на 100 км пути. Для ввода исходных данных применяются поля Edit1, Edit2 и Edit3. Функции обработки события OnKeyPress используют функцию IsFloat для фильтрации вводимых в эти поля символов, во время работы программы в полях ввода отображаются только допустимые символы. Диалоговое окно: http://ipicture.ru/ Вопрос:программа успешно компилируется, но функция для фильтрации вводимых в поля символов IsFloat не работает, т.е. кроме цифр, можно набрать и буквы. Как заставить работать функцию? Работаю в Delphi® 2010
|
| Автор: Данкинг 8.7.2010, 23:03 |
| А почему не использовать стандартную функцию TryStrToFloat ? |
| Автор: Proxin 9.7.2010, 00:14 |
| или повесьте проверку на keypress, так правильней будет. |
| Автор: PsiMagistr 9.7.2010, 09:06 |
| Я обычно IntToStrDef() использую. |
| Автор: LoveMeCozImBLONDE 10.7.2010, 18:17 |
| http://www.citforum.ru/programming/32less/les18.shtml прочитайте, вам будет полезно |
| Автор: Proxin 10.7.2010, 22:08 |
| зачем сюда исключения пихать-то? val вполне от ошибок защитит. |
| Автор: Keeper89 11.7.2010, 01:42 | ||
| Proxin, каждый решил помериться тем, что знает, а на вопрос ТС никто не ответил Предложу вариант:
* Copy/Paste это к сожалению не обрабатывает. |
| Автор: rytmix 11.7.2010, 21:04 |
| Как уже писалось ранее, правильнее проверять при наборе значений |
| Автор: Keeper89 13.7.2010, 22:29 |
| Правильнее? Ну приведите тогда Ваш правильный код ради интереса. |
| Автор: de_Nis 15.7.2010, 09:25 | ||||||||
| Допустим, для работы программы DecimalSeparator должен быть "точка (например, в программах, работающих с AutoCad-ом: AutoCad не воспринимает другой символ в качестве десятичного разделителя). Тогда в процедуре FormActivate д. б. указано:
Далее - один обработчик для всех Edit-ов:
Процедура разрешает ввод только цифр, не требует нажатия только клавиши "точка", допускает использование клавиши Backspace, не допускает ввод более одного десятичного разделителя. Если на событие KeyPress для конкретного Edit-а (например, для Edit3) нужно "повесить" еще что-либо, в коде изменяется строчка: вместо
должно быть
и теперь в процедуре для этого конкретного Edit3 можно дописать дополнительный код. |