![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
буг на Ресайзе [D5]
i-am-vladko © (2006-10-23 21:33:00)Доброго здоровья, Господа !
При изменении height и/или width форм из приложения Delphi не генерит exception, и открbIвает отладчик, причем только 1 раз. Довольно странная ситуация для меня - никогда с подобнbIм не сталкивaлся. Может, кто-то знает, почему ето происходит и как избавиться от етого открbIтия отладчика?
i-am-vladko (2006-10-25 15:23:00) [1]ау, господа...
i-am-vladko (2006-10-25 13:17:00) [2]Спасибо за активное обсуждение и критику )) И все же если говориш КАК НЕ НАДО, обязательно скажи КАК НАДО...
И тема, если кто плохо помнит, совсем другая - активно обсужденное EXCEPTION вообще не генерится, запускается CPU. Как подсказал ув. Анатолий П. (если я правильно его понял) , ето из-за изменения Parent... но как с етим бороться??
Ketmar (2006-10-24 09:42:00) [3]>[20] Anatoly Podgoretsky(c) 24-Oct-2006, 09:02
и таки не могу не согласиться. коли уж поймал исключение -- ну скажи ты e.ClassName и e.Message. текста -- минимум, а пользы -- не измерить...
Anatoly Podgoretsky (2006-10-24 09:06:00) [4]Мне есть еще чего сказать про исключение, но данная тема не подходит. Тем более что автор начитался дурной популярной литературы и по идее тему бы следовало закрыть из-за применения дворового сленга, но это никогда не поздно.
Anatoly Podgoretsky (2006-10-24 09:02:00) [5]
> АП, думаю, помнит.
Отлично, раз раз затронули эту тему.
Даже конструкция
except
end
и то более симпатична, чем
except
on e : exception do
ShowMessage('ERROR on uHelperEditToolTip btnWithOutAllClick');
end
Так делать нельзя, только злить пользователя, хочешь выдать свое дурное сообщение, выдавай, но не маскируй родное сообщение, надо написать так
except
on E: Exception do begin
ShowMessage('ERROR on uHelperEditToolTip btnWithOutAllClick'#13#10 +
'Системное сообщение:'#13#10 +
'<' + E.Message + '>');
end;
end
Loginov Dmitry (2006-10-24 07:51:00) [6]Германн © (24.10.06 3:50) [12]
Пусть лучше пользователь получит "невнятное" т.е. аглицкое сообщение об ошибке. Его имхо проще "распознать" с учётом всех привходящих и найти причины ошибки.
Дополнительно можно повесить обработчик на TApplicationEvents.OnExeption и показывать пользователю свое симпотное, не шокирующее сообщение об ошибках. В одной из программ я сделал несколько своих типов исключений (EError и EWarning), и при каждом из них показываю обычный Application.MessageBox с соответствующей иконкой. Такое вообще никого не должно шокировать :-)
Ketmar (2006-10-24 05:23:00) [7]зыж в дополнение к [17]. лично Ketmar почти никогда не поступает так, как пишет. "делай, как я говорю, а не как я делаю" (ц) %-)
Ketmar (2006-10-24 05:21:00) [8]>[14] Германн(c) 24-Oct-2006, 04:54
>Калатчикову
Канатчикову. %-)
>[15] MikePetrichenko(c) 24-Oct-2006, 05:01
>Почему же хуже? Если я ТОЧНО знаю причину
вот и лови точно этоисключение. и смело его, например, игнорируй. но во имя Ктулху -- не трогай остальные! если ты твёрдо уверен, чтоStrToDateTime()может привести только кEConvertError, то напиши:except on E: EConvertError do. символов не намного больше, а пользы -- на порядки.
Германн (2006-10-24 05:06:00) [9]
> Почему же хуже? Если я ТОЧНО знаю причину excaption. И мне
> совсем не светит ее показывать/обрабатывать (ошибку) и я
> ТОЧНО знаю что с этим делать, то мне проше заткнуть ее и
> все. Так что пустой except/end вполне сгодитя для НЕКОТОРЫХ
> ситуаций.
>
Вот-вот. И тот, кого я упомянул выше, имхо тоже считал, что он ТОЧНО знает! А в результате что? Смерть программы без каких-либо сообщений о причинах сей "безвременной кончины"!
MikePetrichenko (2006-10-24 05:01:00) [10]
> Хуже когда между except и end вообще ничего нет! А такое
> нередко случается. И я уже приводил код "весьма уважаемого
> автора" с таким оборотом.
Почему же хуже? Если я ТОЧНО знаю причину excaption. И мне совсем не светит ее показывать/обрабатывать (ошибку) и я ТОЧНО знаю что с этим делать, то мне проше заткнуть ее и все. Так что пустой except/end вполне сгодитя для НЕКОТОРЫХ ситуаций.
Германн (2006-10-24 04:54:00) [11]
> видел бы ты, сколько у меня ещё таких мест осталось! %-)
> фактически, нормальная и многословная только сетевая часть.
> остальное -- или вообще никак, или дзеном. %-)
> отсюда у меня стандартное предупреждение: лечение в психушке
> после просмотра кода я не оплачиваю. %-)
>
У меня и без "твоих мест" много других путей на "Калатчикову дачу"! Хотя там было гораздо веселее, если верить В.С.В. :-)
Ketmar (2006-10-24 04:41:00) [12]>[12] Германн(c) 24-Oct-2006, 03:50
>Хуже когда междуexceptиend
>вообще ничего нет!
видел бы ты, сколько у меня ещё таких мест осталось! %-) фактически, нормальная и многословная только сетевая часть. остальное -- или вообще никак, или дзеном. %-)
отсюда у меня стандартное предупреждение: лечение в психушке после просмотра кода я не оплачиваю. %-)
Германн (2006-10-24 03:50:00) [13]
> sniknik © (24.10.06 00:04) [10]
>
> > А что за ошибка?
> не видиш чтоль? > "ERROR on uHelperEditToolTip btnWithOutAllClick"
> ;о))
>
> p.s. терпеть не могу такой подход (а был бы его начальником,
> уволил бы нафик)... лучше уж вообще без обработчика, чем
> такой.
> p.p.s. както неделю бились, почему сервис не запускается
> (партнеров прога), и сами они ничего не могли сказать кроме
> "у нас работает", т.е. проблема типа ваша..., ошибка была
> вот такая же "гениальная" - "проблемы при старте сервиса,
> сервис не запущен"..., в итоге выяснилось что второй сервис
> на том компе открывал тотже порт что и первый... а в вместо
> нормального системного о занятости порта (после которого
> решение делается в 5 мин. (найти где у них прописывается
> нужный параметр и изменить)) выше написанное де@#мо...
> <Цитата>
>
> Ketmar © (24.10.06 00:16) [11]
>
> >[10] sniknik(c) 24-Oct-2006, 00:04
> угу. я в CDM наделал таких же "заглушек". идиот. потом долго
> правил на что-то более-менее полезное. но ещё не везде выправил.
> %-)
>
> зыж извиняет меня только то, что я перестал раздавать исходники
> CDM. %-)
Тебя "извиняет" ещё и то, что хоть "заглушки поставил". Хуже когда междуexceptиendвообще ничего нет! А такое нередко случается. И я уже приводил код "весьма уважаемого автора" с таким оборотом. АП, думаю, помнит.
Но и в общем смысле по данной теме я высказывался. Типа: знаешь точно какие исключения могут возникнуть в том или ином участке программы - обрабатывай. Не уверен - не обрабатывай. Пусть лучше пользователь получит "невнятное" т.е. аглицкое сообщение об ошибке. Его имхо проще "распознать" с учётом всех привходящих и найти причины ошибки.
Ketmar (2006-10-24 00:16:00) [14]>[10] sniknik(c) 24-Oct-2006, 00:04
угу. я в CDM наделал таких же "заглушек". идиот. потом долго правил на что-то более-менее полезное. но ещё не везде выправил. %-)
зыж извиняет меня только то, что я перестал раздавать исходники CDM. %-)
sniknik (2006-10-24 00:04:00) [15]> А что за ошибка?
не видиш чтоль? > "ERROR on uHelperEditToolTip btnWithOutAllClick"
;о))
p.s. терпеть не могу такой подход (а был бы его начальником, уволил бы нафик)... лучше уж вообще без обработчика, чем такой.
p.p.s. както неделю бились, почему сервис не запускается (партнеров прога), и сами они ничего не могли сказать кроме "у нас работает", т.е. проблема типа ваша..., ошибка была вот такая же "гениальная" - "проблемы при старте сервиса, сервис не запущен"..., в итоге выяснилось что второй сервис на том компе открывал тотже порт что и первый... а в вместо нормального системного о занятости порта (после которого решение делается в 5 мин. (найти где у них прописывается нужный параметр и изменить)) выше написанное де@#мо...
Loginov Dmitry (2006-10-23 23:43:00) [16]А что за ошибка?
Anatoly Podgoretsky (2006-10-23 22:31:00) [17]
> буг на Ресайзе
Кто на ком стоял?
i-am-vladko (2006-10-23 21:58:00) [18]ниже - создание формbI
i-am-vladko (2006-10-23 21:58:00) [19]try
fHelperEditToolTip := TfHelperEditToolTip.Create(nil,MaxWidth,MaxHeight,gbToolTipBox);
for i := 0 to Length(ShowedFormsArray) - 1 do
fHelperEditToolTip.cbFormName.Items.Add(Trim(UpperCase(ShowedFormsArray[i].Class Name)));
if intVal <> -1
then fHelperEditToolTip.cbFormName.ItemIndex := intVal
else fHelperEditToolTip.cbFormName.Text := gbToolTipBox.Caption;
with ToolTipContainer do
begin
Parent := fHelperEditToolTip;
Left := 0;
Top := 0;
Dragable := FALSE;
end;
ToolTipButton.Caption := 'View Mode';
ToolTipButton.OnClick := fHelperEditToolTip.btnToolTipCancel;
ToolTipEditButton.Visible := FALSE;
wbToolTip.Visible := FALSE;
with fHelperEditToolTip do
with fHelperEditToolTip do
begin
MR := ShowModal;
Free;
end;
until MR <= mrNO;
except
on e : exception do
ShowMessage('ERROR on uHelper btnToolTipEditClick');
end;
i-am-vladko (2006-10-23 21:56:00) [20]Пожалуйста. Происходит ето здесь