Главная страница
    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.46 MB
Время: 0.043 c
14-1129812134
TButton
2005-10-20 16:42
2005.11.13
притёр


2-1129796254
BaxTMaH
2005-10-20 12:17
2005.11.13
SreingGrid


2-1129799690
Duffik
2005-10-20 13:14
2005.11.13
Проверка на наличие


14-1129914900
Gudvin
2005-10-21 21:15
2005.11.13
Востановить удаленные файлы


8-1117391048
Grief
2005-05-29 22:24
2005.11.13
воспроизведение звука





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