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

Вниз

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

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

Наверх




Память: 0.46 MB
Время: 0.508 c
3-1128368955
zig
2005-10-03 23:49
2005.11.13
params и расход памяти


14-1129792045
kot andrei
2005-10-20 11:07
2005.11.13
нужна идея


14-1129907305
default
2005-10-21 19:08
2005.11.13
Neural Networks and Fuzzy Systems : a Dynamical Systems Approach


14-1130162100
Zacho
2005-10-24 17:55
2005.11.13
Дата-кабель для Сименс


1-1126391885
antoxa2005
2005-09-11 02:38
2005.11.13
Подскажите, если кто знает. Как инсталировать BDE и MDAC_TYP не





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