Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.048 c
2-1132712427
Дева
2005-11-23 05:20
2005.12.11
Помогите найти ошибку


2-1132669419
Wolferio
2005-11-22 17:23
2005.12.11
ShellListView


8-1121037044
Yura32
2005-07-11 03:10
2005.12.11
OpenGL


3-1130478768
Трегубов Александр
2005-10-28 09:52
2005.12.11
LEFT OUTER JOJN


3-1129931650
Ivan Melnikov
2005-10-22 01:54
2005.12.11
Lookup в FastReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский