Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Имя метода или функции 


kull   (2002-04-17 12:21) [0]

Привет всем!
Давно мучающий меня вопрос:
А можно ли каким либо способом, находясь внутри метода, узнать его имя.
Интересуют не только published, но и private,public и protected методы.



Игорь Шевченко   (2002-04-17 13:52) [1]

День добрый,

Конечно! Достаточно посмотреть на имя функции или метода :-)

С уважением,



MBo   (2002-04-17 14:19) [2]

Этот вопрос несколько раз видел в конфах borland, ответы уклончивые. (анекдот такой есть)

В нашем форуме я тоже поднимал этот вопрос - гуру, к сожалению, не заинтересовались.

вот чего я придумывал, полумеры, конечно.
недо-решение 1 для published
procedure TForm1.Button1Click(Sender: TObject);
var p:pbyte;
function DummyFunc: Pointer;
asm
xor eax, eax
end;
begin
p:=@DummyFunc;
inc(p,4);
label3.caption:=classname+"."+methodname(p);
end;

недо-решение 2

function ACaller:pointer;
asm
mov eax, [esp]
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
var p,p1:pbyte;
begin
p1:=ACaller;
dec(p1,53);
//53-магическое число, зависит от пролога процедуры, например, инициализации строк или дин. массивов
p:=methodaddress("CheckBox1Click");
label3.caption:=inttohex(cardinal(p),8);//для контроля
label4.caption:=inttohex(cardinal(p1),8);
label2.caption:=classname+"."+methodname(p1);
end;

Куда смотреть -
1) изучать состояние стека - кропотливо разбираться надо,
поскольку у задачи практического смысла мало, я не вникал пока
2) генерировать detailed map (linker)
3) сопоставлять адреса из VMT и DMT c текущими




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.013 c
14-94569          PVOzerski             2002-03-25 10:42  2002.04.29  
А где можно на программиста выучиться в Питере?


1-94418           Stan Orlov            2002-04-18 09:06  2002.04.29  
Как выделить весь текст в RichEdit или Memo?


1-94444           Voldemar              2002-04-15 01:29  2002.04.29  
Подскажите диалог...


1-94499           ymin                  2002-04-15 14:41  2002.04.29  
фон для формы какой-нибудь рисунок


1-94502           Alexander Vasjuk      2002-04-16 11:46  2002.04.29  
Условная компиляция. Приглашение к разговору.