Главная страница
    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.47 MB
Время: 0.04 c
2-1130136258
F1
2005-10-24 10:44
2005.11.13
Блокировка кнопки закрытия модального окна.


11-1111470548
bar
2005-03-22 08:49
2005.11.13
Может убрать строку { KOL MCK } // Do not remove this line


14-1130097982
LordOfRock
2005-10-24 00:06
2005.11.13
Opera 8.5/9.0


1-1130077304
markers
2005-10-23 18:21
2005.11.13
Визуальные проблемы TreeView


1-1130149453
-==EVGEN==-
2005-10-24 14:24
2005.11.13
Как открыть определенный узел в TreeView





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