![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли узнать имя процедуры. [D6, WinXP]
beglec © (2005-10-23 10:54:00)Вопрос: Можно ли узнать в процедуре имя процедуры которая ее вызвала.
Например:
Procedure Bebe;
begin
...
// узнать какая процедура вызвала процедуру/функцию bebe
end;
procedure gogogo;
begin
bebe;
end;
Erik1 (2005-10-24 12:30:00) [1]Используй готовое решние в JCL есть хороший обрабочик исключений, он даже стек показывает. Разумеется этот механизм можно использовать нетолько при исключениях.
beglec (2005-10-23 16:41:00) [2]->nt - А также пиратством, троянскими конями, спамерством хакерством и фрикерством :)
Нет. Просто делаю обработку логических ошибок.
Типа
Login not found и так далее
а процедур по обработке данных с логинами очень много. Соответственно и много может быть логических ошибок. Делаю теперь везде логи почти на каждую операцию. То что работает уже без сбоев там убираю "логирование"
Просмотря весь код есть одинаковые места с чуть чуть разнвыми вызовами.
В данный момент я просто делаю
AddLog(log,Name Procedure);
Name procedure - название откуда было вызвано. Нужно это чтобы легче было искать логические ошибки. Сами понимаете, что это за ошибки.
Delphi их обнаружить не может.
Поэтому задумался и задался вопросом, а может ли например процедура AddLog распозновать откуда ее вызвали, по мимо того что явно ей указывать.
Логов в программе много пишу, и зачастую переношу простым копированием строки CTRL+C. Частенько забываю исправлять из какой процедуры вызываю. И в случае ошибки в забытом месте, начинается путаница.
Вот и вся проблема.
nt (2005-10-23 15:41:00) [3]> Вопрос: Можно ли узнать в процедуре имя процедуры которая
> ее вызвала.
попахивает нарушением локальности...
Джо (2005-10-23 14:52:00) [4]В принципе, я думаю, можно узнать и имя. Для этого придется генерировать для программы detailed map-file (Project/Options/Linker...). Таким образом поступает, например, Jedi'ский обработчик исключений.
beglec (2005-10-23 13:25:00) [5]Спасибо. Нужен был ответ только да или нет.
если да, то как.
-> OldNaum а если процедуру вызвают из 10000 разных мест ? Да еще из разных программ.
Это выход, согласен, но не рациональный, по крайней мере я так думаю.
OldNaum (2005-10-23 11:55:00) [6]используй какие-нить флаги, кто тебе мешает?
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;
Sergey Masloff (2005-10-23 11:26:00) [7]имя нет.