Для красивого ведения протокола работы хочу в каждой процедуре писать в лог ее имя.
В свое время смотрел исходники TurboAccess, которые шли с 6 TP. Там в каждой процедуре явно устанавливалась какая-то глобальная переменная типа ThisPros:='имя', но этот способ некрасив: при переименовании процедуры придется вручную менять присваиваемый текст.
Имеется ли возможность в коде узнать, как называется текущая процедура? Обойдусь, конечно, если нету, но хочется...
Узнать из процедуры ее собственное имя
Модератор: Модераторы
- Troublemaker
- постоялец
- Сообщения: 292
- Зарегистрирован: 16.04.2008 13:00:44
- Откуда: Биробиджан, Дальний Восток
- Контактная информация:
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Можно, наверное, что-то выцепить с помощью модуля LineInfo:
Но программу придется компилить с отладочной информацией.
Код: Выделить всё
var
func_name, sourcefile_name: shortstring;
line_number: longint;
...
if GetLineInfo(get_frame, func_name, sourcefile_name, line_number) then ...
Но программу придется компилить с отладочной информацией.
- Troublemaker
- постоялец
- Сообщения: 292
- Зарегистрирован: 16.04.2008 13:00:44
- Откуда: Биробиджан, Дальний Восток
- Контактная информация:
Спасибо, пороюсь. А тут мысль одна появилась: а ведь компилятор знает, какую процедуру он обрабатывает.
Нельзя ли использовать какой-нибудь макрос из директив компилятора, который будет во время компиляции подставлять какие-то текущие значения, скажем, имя текущей процедуры или номер строки?
Полистал fpcdoc-pdf, не нашел ничего похожего, но мог и просто пропустить. Есть идеи?
Нельзя ли использовать какой-нибудь макрос из директив компилятора, который будет во время компиляции подставлять какие-то текущие значения, скажем, имя текущей процедуры или номер строки?
Полистал fpcdoc-pdf, не нашел ничего похожего, но мог и просто пропустить. Есть идеи?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Вообще в компиляторах такая фича есть.
FPC понимает вещи вида {$I %TARGETOS%}, но может ли он таким образом подставить номер строки, не знаю.
FPC понимает вещи вида {$I %TARGETOS%}, но может ли он таким образом подставить номер строки, не знаю.
- Troublemaker
- постоялец
- Сообщения: 292
- Зарегистрирован: 16.04.2008 13:00:44
- Откуда: Биробиджан, Дальний Восток
- Контактная информация:
Sergei I. Gorelkin писал(а):может ли он таким образом подставить номер строки, не знаю.
Номер строки как раз может: {$I line} (prog.pdf, стр. 25), а вот название процедуры, судя по всему, нет.
