Узнать из процедуры ее собственное имя

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Узнать из процедуры ее собственное имя

Сообщение Troublemaker » 30.10.2008 17:28:37

Для красивого ведения протокола работы хочу в каждой процедуре писать в лог ее имя.
В свое время смотрел исходники TurboAccess, которые шли с 6 TP. Там в каждой процедуре явно устанавливалась какая-то глобальная переменная типа ThisPros:='имя', но этот способ некрасив: при переименовании процедуры придется вручную менять присваиваемый текст.
Имеется ли возможность в коде узнать, как называется текущая процедура? Обойдусь, конечно, если нету, но хочется...
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Узнать из процедуры ее собственное имя

Сообщение Sergei I. Gorelkin » 30.10.2008 18:53:07

Можно, наверное, что-то выцепить с помощью модуля LineInfo:
Код: Выделить всё
var
  func_name, sourcefile_name: shortstring;
  line_number: longint;
...
if GetLineInfo(get_frame, func_name, sourcefile_name, line_number) then ...


Но программу придется компилить с отладочной информацией.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Узнать из процедуры ее собственное имя

Сообщение Troublemaker » 02.11.2008 06:32:29

Спасибо, пороюсь. А тут мысль одна появилась: а ведь компилятор знает, какую процедуру он обрабатывает.

Нельзя ли использовать какой-нибудь макрос из директив компилятора, который будет во время компиляции подставлять какие-то текущие значения, скажем, имя текущей процедуры или номер строки?

Полистал fpcdoc-pdf, не нашел ничего похожего, но мог и просто пропустить. Есть идеи?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Узнать из процедуры ее собственное имя

Сообщение Sergei I. Gorelkin » 02.11.2008 14:13:15

Вообще в компиляторах такая фича есть.
FPC понимает вещи вида {$I %TARGETOS%}, но может ли он таким образом подставить номер строки, не знаю.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Узнать из процедуры ее собственное имя

Сообщение Troublemaker » 02.11.2008 14:38:43

Sergei I. Gorelkin писал(а):может ли он таким образом подставить номер строки, не знаю.

Номер строки как раз может: {$I line} (prog.pdf, стр. 25), а вот название процедуры, судя по всему, нет.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Узнать из процедуры ее собственное имя

Сообщение Attid » 02.11.2008 15:22:13

значит надо фичореквест оформить =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru