![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как обработать исключение в чужой функции?
fzt © (2011-08-17 10:43:00)Hi
Как подавить/обработать чужую обработку ошибки?
procedure A;
begin
try
<raise error here>
except
on Err: Exception do ShowMessage('Err');
end;
end;
Procedure My;
begin
A;
end;
Мне требуется не меняя код процедуры A, обработать ошибку без вываливания пользователю нага. Как?
_Юрий (2011-08-17 13:54:00) [1]В данном случае правильное решение - каким то образом заставить автора процедуры "A" убрать из нее говнокод. В противном случае вы получите уже два говнокода вместо одного.
Anatoly Podgoretsky (2011-08-17 12:49:00) [2]> fzt (17.08.2011 12:14:14) [14]
> Мне нужно перехватить исключение, или изменить способ оповещения о нём.
> За организацию процесса разработки другим людям деньги платят.
Ega23 (2011-08-17 12:28:00) [3]
> Отлаженный десятилетием процесс.
> Мне после коммита каждому по почте компоненту отправить?
> Не пойдёт, будут тонны срача вместо работу работать.
Отлично отлаженный процесс. Имея на руках исходник и (судя по коммиту) SVN - компонент надо по почте рассылать.
Игорь Шевченко (2011-08-17 12:20:00) [4]fzt (17.08.11 12:14) [14]
Я же не вижу, что у тебя в руках. А имея исходник, задавать такой вопрос, как ShowMessage запретить, несколько странно, не правда ли ? Поправил исходник ОДИН РАЗ и все довольны
fzt (2011-08-17 12:14:00) [5]2 Игорь Шевченко, угу.. и стесняюсь имея исходник на руках его подправить.
То что дураку понятно, логику нужно доказывать ©
2 Ega23Когда в руках молоток - всё кажется гвоздями? Отлаженный десятилетием процесс. Мне его менять ни резона, ни хоть какого-то желания. Замечание не по адресу.
Смысл работы - материальные блага в обмен на мою узкую специализацию.
За организацию процесса разработки другим людям деньги платят.
Мне нужно перехватить исключение, или изменить способ оповещения о нём.
Если разраб компоненты любит наги, которые пользователь должен читать на не родном языке да ещё и промаргивать - его дело. Я их предпочитаю в лог файлы собирать например.
Юрий Зотов (2011-08-17 12:05:00) [6]> fzt (17.08.11 11:21) [9]
> заменил на время на вызов пустышки и всё..
> я просто хз как это на дельфи сделать
В модуле с процедурой A:
1. В секции interface объявляем переменную
var
AllowShowMessage: boolean = true;
2. В секции implementation перед процедурой A вставляем заглушку:
procedure ShowMessage(S: string);
begin
if AllowShowMessage then
Dialogs.ShowMessage(S)
end;
Теперь, управляя извне переменной AllowShowMessage, можем запрещать или разрешать выдачу сообщения.
Ega23 (2011-08-17 12:00:00) [7]
> Имя нам - Легион разработчиков..
> Мне после коммита каждому по почте компоненту отправить?
Имя вам - Легион школоты, коль скоро процесс разработки такой "странный".
Игорь Шевченко (2011-08-17 11:52:00) [8]а ShowMessage ('вы используете триальную версию') не иначе
Andy BitOff (2011-08-17 11:37:00) [9]Вот, ели Розыч заглянет и сочтет нужным тебе чего-то объяснить, то шанс есть. Иначе тебе на хакер.ru =)
fzt (2011-08-17 11:21:00) [10]Имя нам - Легион разработчиков..
Мне после коммита каждому по почте компоненту отправить? =(
Не пойдёт, будут тонны срача вместо работу работать.
Блин.. вызов процедуры - 6 байт, ShowMessage - она особенная что-ли?
заменил на время на вызов пустышки и всё.. я просто хз как это на дельфи сделать
Ega23 (2011-08-17 11:17:00) [11]
> А - сторонний компонент =(
И что такого? Возьми и перепиши.
fzt (2011-08-17 11:12:00) [12]А - сторонний компонент =(
Ega23 (2011-08-17 11:11:00) [13]Лучше перепиши А.
Ega23 (2011-08-17 11:10:00) [14]
> реализуемо?
Нет.
fzt (2011-08-17 11:09:00) [15]А как-то подавить на время вызов ShowMessage можно?..
допустим что-то вроде
OldPTR:=ShowMessage;
ShowMessage:=@EmptyProc;
<bad code here>
ShowMessage:=@OldPTR;
реализуемо?
Palladin (2011-08-17 10:55:00) [16]никак
oldman (2011-08-17 10:54:00) [17]Я фигню написал!!!
oldman (2011-08-17 10:52:00) [18]
> не меняя код процедуры A
А ведь именно он и неверный!
ShowMessage в нем не появиться никогда.