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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 11:15   #1
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
Радость

Всем привет.
Не могу перехватить ошибку при помощи try... exception при вводе неправильной даты в MaskEdit(точнее не знаю как отловить тот момент когда вводишь только 2 цифры а не полностью 6), маска на едите стоит !99/99/00;1;_. Вот код
Код:
try
  if (TryStrToDateTime(medt1.Text, dat) =False) then
  begin
    medt1.Clear;
    ShowMessage('Íå â³ðíî âêàçàíà äàòà');
  end;
  except
 on  E :EDBEditError  do
  ShowMessage('Íå â³ðíî âêàçàíà äàòà'+ E.Message);
  end;
Чуток почитал литературы и понял что нужно выбирать класс в котором хранятся ошибки определенного типа, в моем случае это EDBEditError, поставил но все равно не получил нужного результата.Помогите разобраться что не так делаю.

вот сама ошибка Безымянный.jpg

Последний раз редактировалось Stilet; 17.02.2014 в 12:50.
Konstantin_ua вне форума Ответить с цитированием
Старый 17.02.2014, 12:07   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Посадите на OnSetText фиелда такой обработчик. У меня имя поля Date и датасет - ClientDataSet1. У вас естественно свое
Код:
procedure TForm1.ClientDataSet1DateSetText(Sender: TField; const Text: String);
var Value: TDateTime;
begin
  if TryStrToDateTime(Text,Value) then ClientDataSet1Date.AsDateTime:=Value;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 12:09   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Код:
if (TryStrToDateTime(medt1.Text, dat) =False) then
  begin
    medt1.Clear;
    ShowMessage('Íå â³ðíî âêàçàíà äàòà');
  end;
А где в этом коде вообще может возникнуть хоть какое-то исключение связанное с БД?
northener вне форума Ответить с цитированием
Старый 17.02.2014, 12:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
исключение связанное с БД
У ТС dbedit или грид. Вроде в предыдущих постах так было
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 12:21   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
У ТС dbedit или грид. Вроде в предыдущих постах так было
Это ТС написал. Только участок кода для постановки защищенного блока выбрал неправильно. На что я и намекал.
northener вне форума Ответить с цитированием
Старый 17.02.2014, 13:16   #6
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Нет тут ошибка сугубо с Маскедитом.
Бросил на форму перехватчик событий ApplicationEvents. в OnException пишу
Код:
procedure TF_add.aplctnvnts1Exception(Sender: TObject; E: Exception);
begin
 if (E.ClassType = EDBEditError)
    and (Sender Is TMaskEdit)   then
   ShowMessage('tyt ');

end;

end.
ну что то не работает...
Konstantin_ua вне форума Ответить с цитированием
Старый 17.02.2014, 13:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Нет тут ошибка сугубо с Маскедитом
Это ошибка преобразования символьной строки в дату-время при попытке записи в поле датасета
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 13:31   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
ну что то не работает
Ясно что.
Код:
Sender Is TMaskEdit
northener вне форума Ответить с цитированием
Старый 17.02.2014, 13:39   #9
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Sender Is TMaskEdit
можно поточнее пожалуйста
Код:
 if (E.ClassType = EDBEditError)   then
   ShowMessage('tyt ');
так тоже не работает

Последний раз редактировалось Konstantin_ua; 17.02.2014 в 14:01.
Konstantin_ua вне форума Ответить с цитированием
Старый 17.02.2014, 18:34   #10
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

снял галочку Tools-Debugger Options-Integrated Debugger помогло ну не знаю что сделал...

Последний раз редактировалось Konstantin_ua; 17.02.2014 в 18:55.
Konstantin_ua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват ошибок из DLL Crystallon Общие вопросы Delphi 10 22.10.2013 02:36
Перехват ошибок ввода-вывода _-Re@l-_ C# (си шарп) 10 19.01.2012 09:22
перехват ошибок Марк Охман БД в Delphi 5 08.12.2010 16:03
Перехват ошибок компилятора Яр|/||< (^_^) Общие вопросы Delphi 4 27.03.2010 16:07
Перехват ошибок от Windows DRUNE Софт 2 09.04.2009 13:24