Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Странная ошибка   Найти похожие ветки 

 
Quadro   (2005-11-25 14:30) [0]

Добрый день ещё раз!.....столкнулся с такой проблемой...есть маска времени...есть обработчик нажатия клавиши..
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("&#205;&#229;&#226;&#229;&#240;&#237;&#238; &#231;&#224;&#228;&#224;&#237;&#238; &#226;&#240;&#229;&#236;&#255; &#240;&#224;&#231;&#238;&#227;&#240;&#229;&#226;&#224;!",mtWarning,[mbOk],0);
         Exit;
       end;
   end;
 end;
end;

Если намерено ввожу неверное время то,выскакивает окно предупреждения "&#205;&#229;&#226;&#229;&#240;&#237;&#238; &#231;&#224;&#228;&#224;&#237;&#238; &#226;&#240;&#229;&#236;&#255; &#240;&#224;&#231;&#238;&#227;&#240;&#229;&#226;&#224;!" и следом за ним окно с таинственной надписью  Invalid input value. Use escape key to abandon changes....не могу понять в чём же дело....настройка маски - !90:00;1;_


 
umbra ©   (2005-11-25 14:35) [1]

а в чем дело? все идет по плану. значала вылетает Ваше предупреждение, а затем предупреждение от MaskEdit (если Вы используете его)


 
Quadro   (2005-11-25 14:40) [2]

так вот я и спрашиваю,что же маску не устраивает??если Вам не трудно,не могли бы вы меня просветить?


 
Reindeer Moss Eater ©   (2005-11-25 14:43) [3]

Ты же сказал, что
...Если намерено ввожу неверное время то,выскакивает


 
Reindeer Moss Eater ©   (2005-11-25 14:45) [4]

что же маску не устраивает??

Маску устраивает все.
Недовольной остается  только StrToTime.


 
Quadro   (2005-11-25 14:46) [5]

так ведь должно сгенерироваться исключение. выскочить моё окно предупреждения и ,собственно, выйти из обработчика...так?


 
Reindeer Moss Eater ©   (2005-11-25 14:47) [6]

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


 
Leonid Troyanovsky ©   (2005-11-25 14:54) [7]


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


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

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

--
Regards, LVT.


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

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


 
Reindeer Moss Eater ©   (2005-11-25 14:57) [9]

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

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


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

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


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

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

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


 
Leonid Troyanovsky ©   (2005-11-25 15:18) [12]


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


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

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

--
Regards, LVT.


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

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

end.


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

точнее даже так..
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.


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

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

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


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

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


 
Reindeer Moss Eater ©   (2005-11-25 15:43) [17]

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


 
Digitman ©   (2005-11-25 15:51) [18]


> Quadro   (25.11.05 15:42) [16]


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

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

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


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

Продолжает выскакивать душещипательное предупреждение 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...результат - никакой обработки исключения по видимому не происходит...


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

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


 
Digitman ©   (2005-11-25 16:15) [21]


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


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

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

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


 
Leonid Troyanovsky ©   (2005-11-25 16:17) [22]


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


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

--
Regards, LVT.


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

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


 
Digitman ©   (2005-11-25 17:06) [24]


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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.046 c
5-1116828723
Ega23
2005-05-23 10:12
2005.12.11
Связь компонента с DataSet


2-1132476842
The One
2005-11-20 11:54
2005.12.11
Как получить обратиться к полю класса (private) из регулярной...


14-1132662465
syte_ser78
2005-11-22 15:27
2005.12.11
есть ли прога помечающая беды на сд-рв?


1-1131796854
Bruce
2005-11-12 15:00
2005.12.11
Хранение и передача пароля


2-1132818133
VadimSpb
2005-11-24 10:42
2005.12.11
Проблема запроса