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

Вниз

как обработать исключение в чужой функции?   Найти похожие ветки 

 
fzt   (2011-08-17 10:43) [0]

Hi
Как подавить/обработать чужую обработку ошибки?
procedure A;
begin
try
<raise error here>
except
 on Err: Exception do ShowMessage("Err");
end;
end;

Procedure My;
begin
A;
end;

Мне требуется не меняя код процедуры A, обработать ошибку без вываливания пользователю нага. Как?


 
oldman ©   (2011-08-17 10:52) [1]


> не меняя код процедуры A


А ведь именно он и неверный!
ShowMessage в нем не появиться никогда.


 
oldman ©   (2011-08-17 10:54) [2]

Я фигню написал!!!


 
Palladin ©   (2011-08-17 10:55) [3]

никак


 
fzt   (2011-08-17 11:09) [4]

А как-то подавить на время вызов ShowMessage можно?..
допустим что-то вроде
OldPTR:=ShowMessage;
ShowMessage:=@EmptyProc;
<bad code here>
ShowMessage:=@OldPTR;

реализуемо?


 
Ega23 ©   (2011-08-17 11:10) [5]


> реализуемо?


Нет.


 
Ega23 ©   (2011-08-17 11:11) [6]

Лучше перепиши А.


 
fzt   (2011-08-17 11:12) [7]

А - сторонний компонент =(


 
Ega23 ©   (2011-08-17 11:17) [8]


> А - сторонний компонент =(


И что такого? Возьми и перепиши.


 
fzt   (2011-08-17 11:21) [9]

Имя нам - Легион разработчиков..
Мне после коммита каждому по почте компоненту отправить? =(
Не пойдёт, будут тонны срача вместо работу работать.

Блин.. вызов процедуры - 6 байт, ShowMessage - она особенная что-ли?
заменил на время на вызов пустышки и всё.. я просто хз как это на дельфи сделать


 
Andy BitOff ©   (2011-08-17 11:37) [10]

Вот, ели Розыч заглянет и сочтет нужным тебе чего-то объяснить, то шанс есть. Иначе тебе на хакер.ru =)


 
Игорь Шевченко ©   (2011-08-17 11:52) [11]

а ShowMessage ("вы используете триальную версию") не иначе


 
Ega23 ©   (2011-08-17 12:00) [12]


> Имя нам - Легион разработчиков..
> Мне после коммита каждому по почте компоненту отправить?


Имя вам - Легион школоты, коль скоро процесс разработки такой "странный".


 
Юрий Зотов ©   (2011-08-17 12:05) [13]

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


 
fzt   (2011-08-17 12:14) [14]

2 Игорь Шевченко, угу.. и стесняюсь имея исходник на руках его подправить.
То что дураку понятно, логику нужно доказывать ©

2 Ega23 Когда в руках молоток - всё кажется гвоздями? Отлаженный десятилетием процесс. Мне его менять ни резона, ни хоть какого-то желания. Замечание не по адресу.

Смысл работы - материальные блага в обмен на мою узкую специализацию.
За организацию процесса разработки другим людям деньги платят.

Мне нужно перехватить исключение, или изменить способ оповещения о нём.
Если разраб компоненты любит наги, которые пользователь должен читать на не родном языке да ещё и промаргивать - его дело. Я их предпочитаю в лог файлы собирать например.


 
Игорь Шевченко ©   (2011-08-17 12:20) [15]

fzt   (17.08.11 12:14) [14]

Я же не вижу, что у тебя в руках. А имея исходник, задавать такой вопрос, как ShowMessage запретить, несколько странно, не правда ли ? Поправил исходник ОДИН РАЗ и все довольны


 
Ega23 ©   (2011-08-17 12:28) [16]


>  Отлаженный десятилетием процесс.


> Мне после коммита каждому по почте компоненту отправить?
> Не пойдёт, будут тонны срача вместо работу работать.


Отлично отлаженный процесс. Имея на руках исходник и (судя по коммиту) SVN - компонент надо по почте рассылать.


 
Anatoly Podgoretsky ©   (2011-08-17 12:49) [17]

> fzt  (17.08.2011 12:14:14)  [14]

> Мне нужно перехватить исключение, или изменить способ оповещения о нём.

> За организацию процесса разработки другим людям деньги платят.


 
_Юрий   (2011-08-17 13:54) [18]

В данном случае правильное решение - каким то образом заставить автора процедуры "A" убрать из нее говнокод. В противном случае вы получите уже два говнокода вместо одного.



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

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

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1313170131
Leon-Z
2011-08-12 21:28
2011.12.04
Delphi 2007.


2-1313613139
2012
2011-08-18 00:32
2011.12.04
Как получить название месяца и дня недели из текущей даты?


15-1313261161
Jeer
2011-08-13 22:46
2011.12.04
День физкультурника


4-1252505872
Игорь
2009-09-09 18:17
2011.12.04
SYSTEM_HANDLE_INFORMATION


2-1312296516
Foma
2011-08-02 18:48
2011.12.04
TIdMultiPartFormDataStream и русский текст