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

Вниз

Можно ли узнать имя процедуры.   Найти похожие ветки 

 
beglec ©   (2005-10-23 10:54) [0]

Вопрос: Можно ли узнать в процедуре имя процедуры которая ее вызвала.
Например:

Procedure Bebe;
begin
...
// узнать какая процедура вызвала процедуру/функцию  bebe
end;

procedure gogogo;
begin
  bebe;
end;


 
Sergey Masloff   (2005-10-23 11:26) [1]

имя нет.


 
OldNaum ©   (2005-10-23 11:55) [2]

используй какие-нить флаги, кто тебе мешает?

procedure bebe(who_run_me: integer);
begin
case who_run_me of
 0: showmessage("gogogo");
 1: showmessage("testtest");
 else showmessage("someoneelse");
...
end;

procedure gogogo;
begin
bebe(0);
end;


 
beglec ©   (2005-10-23 13:25) [3]

Спасибо. Нужен был ответ только да или нет.
если да, то как.

-> OldNaum а если процедуру вызвают из 10000 разных мест ? Да еще из разных программ.

Это выход, согласен, но не рациональный, по крайней мере я так думаю.


 
Джо ©   (2005-10-23 14:52) [4]

В принципе, я думаю, можно узнать и имя. Для этого придется генерировать для программы detailed map-file (Project/Options/Linker...). Таким образом поступает, например, Jedi"ский обработчик исключений.


 
nt   (2005-10-23 15:41) [5]

> Вопрос: Можно ли узнать в процедуре имя процедуры которая
> ее вызвала.

попахивает нарушением локальности...


 
beglec ©   (2005-10-23 16:41) [6]

->nt - А также пиратством, троянскими конями, спамерством хакерством и фрикерством :)

Нет. Просто делаю обработку логических ошибок.
Типа
Login not found и так далее
а процедур по обработке данных с логинами очень много. Соответственно и много может быть логических ошибок. Делаю теперь везде логи почти на каждую операцию. То что работает уже без сбоев там убираю "логирование"
Просмотря весь код есть одинаковые места с чуть чуть разнвыми вызовами.
В данный момент  я просто делаю

AddLog(log,Name Procedure);

Name procedure - название откуда было вызвано. Нужно это чтобы легче было искать логические ошибки. Сами понимаете, что это за ошибки.
Delphi их обнаружить не может.

Поэтому задумался и задался вопросом, а может ли например процедура AddLog распозновать откуда ее вызвали, по мимо того что явно ей указывать.

Логов в программе много пишу, и зачастую переношу простым копированием строки CTRL+C. Частенько забываю исправлять из какой процедуры вызываю. И в случае ошибки в забытом месте, начинается путаница.

Вот и вся проблема.


 
Erik1 ©   (2005-10-24 12:30) [7]

Используй готовое решние в JCL есть хороший обрабочик исключений, он даже стек показывает. Разумеется этот механизм можно использовать нетолько при исключениях.



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
11-1110826662
dimaxx
2005-03-14 21:57
2005.11.13
Несколько вопросов по KOL


14-1129728847
Shst
2005-10-19 17:34
2005.11.13
Вопрос про Select


3-1128039182
DimonS
2005-09-30 04:13
2005.11.13
Как запретить вставку пустой строки?


2-1129725400
kolos_rus
2005-10-19 16:36
2005.11.13
Диспетчер печати


14-1129731129
oldman
2005-10-19 18:12
2005.11.13
Вот такая вот задачка по физике :)))