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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.004 c
4-1252659169
istok20
2009-09-11 12:52
2011.12.04
получить session id из process id..


2-1313569604
Pepe
2011-08-17 12:26
2011.12.04
Обратный алгоритм.


2-1313583080
rammic
2011-08-17 16:11
2011.12.04
MemoryStream.SetSize не слушается


15-1313357399
Юрий
2011-08-15 01:29
2011.12.04
С днем рождения ! 15 августа 2011 понедельник


15-1304575753
samalex2504
2011-05-05 10:09
2011.12.04
Нет копирования содержимого компонентов Delphi в Excel и Word





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский