Текущий архив: 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("Íåâåðíî çàäàíî âðåìÿ ðàçîãðåâà!",mtWarning,[mbOk],0);
Exit;
end;
end;
end;
end;
Если намерено ввожу неверное время то,выскакивает окно предупреждения "Íåâåðíî çàäàíî âðåìÿ ðàçîãðåâà!" и следом за ним окно с таинственной надписью 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.5 MB
Время: 0.042 c