Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странная ошибка [D7, XP]


Страницы:   1 2

Quadro ©   (2005-11-25 14:30:00) 

Добрый день ещё раз!.....столкнулся с такой проблемой...есть маска времени...есть обработчик нажатия клавиши..
procedure TForm1.TimeOutKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) and (TimeOut.Text '') then
 begin
   try
     StrToTime(TimeOut.Text);
     TimeOut.Enabled:=False;
   except
     on EConvertError do
       begin
         MessageDlg('Íåâåðíî çàäàíî âðåìÿ ðàçîãðåâà!',mtWarning,[mbOk],0);
         Exit;
       end;
   end;
 end;
end;

Если намерено ввожу неверное время то,выскакивает окно предупреждения 'Íåâåðíî çàäàíî âðåìÿ ðàçîãðåâà!' и следом за ним окно с таинственной надписью  Invalid input value. Use escape key to abandon changes....не могу понять в чём же дело....настройка маски - !90:00;1;_


Quadro   (2005-11-25 17:14:00) [1]

Вот этого то я и не знал!!!...Спасибо вам всем за проявленное терпение=))...


Digitman   (2005-11-25 17:06:00) [2]


> это связано с особенностью маски проверять соответствие
> при потере фокуса????


ну можно и так сказать.

потеря фокуса сопровождается соответствующим win-сообщением в адрес окна маск-контрола, при обработке этого сообщения вызывается соотв.метод TCustomMaskEdit.ValidateEdit(), в которой и возбуждается исключение, если введенные юзером данные инвалидны


Quadro   (2005-11-25 16:58:00) [3]

Алилуйя,братья!!!!!!!!!!=))))всё оказалось так просто!!!!!Только я не совсем понял,почему исключение EDBEditError можно перехватить только в Application.OnException??это связано с особенностью маски проверять соответствие при потере фокуса????


Leonid Troyanovsky   (2005-11-25 16:17:00) [4]


> Quadro   (25.11.05 15:54) [19]
> Продолжает выскакивать душещипательное предупреждение Invalid
> input value. Use escape key to abandon changes даже в этом
> случае


Чукча писатель?

--
Regards, LVT.


Digitman   (2005-11-25 16:15:00) [5]


> ConvertError я воткнул типа если вдруг СтрТуТайм завозмущается


да до него дело не доходит даже !
как и до обработки BitBtn1Click в принципе ..

упомянутое исключение (EDBEditError) возбуждается в момент потери MaskEdit-компонентом фокуса ввода, при этом в коде компонента происходит проверка корректности введенных данных и в случае  несоответствия как раз и возбуждается исключение , при этом фокус остается на компоненте

перехватить исключение можно, например, в Application.OnException


Quadro   (2005-11-25 15:55:00) [6]

ConvertError я воткнул типа если вдруг СтрТуТайм завозмущается=)


Quadro   (2005-11-25 15:54:00) [7]

Продолжает выскакивать душещипательное предупреждение Invalid input value. Use escape key to abandon changes даже в этом случае
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a:TDateTime;
begin
try
 a:=StrToTime(MaskEdit1.Text);
except
on EDBEditError do ShowMessage('!!!');
on EConvertError do ShowMessage('???')
else ShowMessage('?!?!?');
end;
end;
Настройка маски - !90:00;1;_...намеренно ввожу неправиьное время 00...результат - никакой обработки исключения по видимому не происходит...


Digitman   (2005-11-25 15:51:00) [8]


> Quadro   (25.11.05 15:42) [16]


ну тебе же уже сказали, что EConvertError НЕ будет возбуждено в ДАННОЙ ситуации ! И ждать его тут попросту бессмысленно .. А ты вновь его обработчик в except воткнул) ... ну и не тормоз ли после этого ?)

если ты сомневаешься в классе исключения (или не знаешь его, а по исходникам шарить лень), то выяснить это проще пареной репы :

on e:exception do ShowMessage(e.ClassName + ' ' + e.message);


Reindeer Moss Eater   (2005-11-25 15:43:00) [9]

Что значит не работает?


Quadro   (2005-11-25 15:42:00) [10]

Я пытаюсь понять, почему не работает мой пример...если Вы столь большой профессионал и Вас раздражают начинающие - зачем заглядывать в соответствующий раздел форума?


Reindeer Moss Eater   (2005-11-25 15:34:00) [11]

Ок...вот этот пример должен работать?

Ты спецом прикидываешься тормозом?


Quadro   (2005-11-25 15:33:00) [12]

точнее даже так..
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a:TDateTime;
begin
try
 a:=StrToTime(MaskEdit1.Text);
except
on EDBEditError do ShowMessage('!!!');
on EConvertError do ShowMessage('???');
end;
end;

end.


Quadro   (2005-11-25 15:32:00) [13]

Ок...вот этот пример должен работать?
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a:TDateTime;
begin
 try
   a:=StrToTime(MaskEdit1.Text);
 except
   on EDBEditError do ShowMessage('!!!');
 end;
end;

end.


Leonid Troyanovsky   (2005-11-25 15:18:00) [14]


> Quadro   (25.11.05 15:00) [10]
> так ведь если не
> введены какие то ожидаемые  символы - должно сгенерироваться
> исключение EConvertError=> должно пойматься  в обработчике
> этого самого исключения....верно?


TMaskEdit генерирует EDBEditError.

См. также
http://groups.google.com/group/fido7.ru.delphi.chainik/msg/eec55fc9cd11d3c3

--
Regards, LVT.


Reindeer Moss Eater   (2005-11-25 15:03:00) [15]

должно сгенерироваться исключение EConvertError=>

С какого перепугу ЭТО исключение должнго сгенерироваться?


Quadro   (2005-11-25 15:00:00) [16]

"Можно предположить, что маску не устраивают, что
не введены все символы, ожидаемые ею."..так ведь если не введены какие то ожидаемые  символы - должно сгенерироваться исключение EConvertError=> должно пойматься  в обработчике этого самого исключения....верно?
"И почему, собс-но, проверка в OnKeyPress?"...вынести в отдельную функцию?


Reindeer Moss Eater   (2005-11-25 14:57:00) [17]

Значит исключение не EConvertError

А обрабатываешь ты только его.
Все остальное попадает в обработчик по умолчанию


Quadro   (2005-11-25 14:55:00) [18]

весь фокус в том, что  если запускать из под винды - результат тот же..Invalid input value. Use escape key to abandon changes и гуляй Вася=((.


Leonid Troyanovsky   (2005-11-25 14:54:00) [19]


> Quadro   (25.11.05 14:40) [2]
> так вот я и спрашиваю,что же маску не устраивает??если Вам
> не трудно,не могли бы вы меня просветить?


Можно предположить, что маску не устраивают, что
не введены все символы, ожидаемые ею.

И почему, собс-но, проверка в OnKeyPress?

--
Regards, LVT.


Reindeer Moss Eater   (2005-11-25 14:47:00) [20]

Так.
Если не запускать из под среды.
Иначе - не так.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо