Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 00:21   #1
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию MaskEdit. Сообщение об ошибке.

Есть компонент для ввода даты MaskEdit. Его свойство EditMask выглядет так: !90/90/0000;1;_
т.е полезователь должен ввести месяц (90), день (90) и год (0000);
В последствии все эти три числа присваиваются переменным m, d, y.
Год задается четырьмя цифрами. Но если пользователь задаст три цифры, например 201, то появляется сообщение об ошибке.
Можно ли эту ошибку обработать программно и вместо нее вывести например диалоговое окно MessageBox, где будет написано, что надо задать все 4 цифры.
Изображения
Тип файла: bmp Захват1.BMP (130.5 Кб, 133 просмотров)
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 28.11.2010, 00:41   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Проверяйте количество сиволов после второго слэша.
mihali4 вне форума Ответить с цитированием
Старый 28.11.2010, 00:43   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

try except end отменили?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.11.2010, 00:51   #4
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

А зачем изобретать велосипед, если отличный компонент DateEdit уже существует?
Когда-то он был в библиотеке RX, теперь - в JEDI.
Поставьте - и не мучайтесь!
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 28.11.2010, 01:11   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Самое простое, разумеется, применить TDateTimePicker и не париться.
Но если никак и MaskEdit свет в окошке, то не делать обязательным ввод всех символов (с этим компонентом шутки плохи).
В маске для даты использовать 90.90.9999.
Затем проверять "вручную" правильность заполнения в событии OnExit MaskEdit (TryStrToDate). Там же и дать пользователю по рукам, если не так или не все ввел, вернув обратно фокус ввода.
Прик вне форума Ответить с цитированием
Старый 28.11.2010, 01:20   #6
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

[QUOTE]try except end отменили? [QUOTE]
а какое исключение при этом генерируется?
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 28.11.2010, 01:31   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
а какое исключение при этом генерируется?
А в этом то и все и дело. Исключение генерируется внутри компонента и перехватить его невозможно не имея наследника.
Прик вне форума Ответить с цитированием
Старый 28.11.2010, 02:11   #8
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

не скажу что это самый лучший способ но когда то яделал так...
в Edit'е была маска даты "01.01.2010" длина строки 10 символов можно просто поставить проверку если длина текста Edit не 10 символов то выдаем сообщение "введена неправильная дата"
wm_leviathan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение об ошибке... Arinka Помощь студентам 9 25.05.2010 16:58
MaskEdit - вывод об ошибке. lutdan Компоненты Delphi 2 29.10.2009 09:29
Сообщение об ошибке ruavia3 Microsoft Office Excel 3 13.10.2009 23:10
Сообщение об ошибке Kreadlling Общие вопросы C/C++ 3 08.09.2009 13:30
Сообщение об ошибке! QWERT1988 Общие вопросы Delphi 4 01.06.2009 17:14