Форум: "Основная";
Поиск по всему сайту: 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.032 c
3-94318           kserg@ukr.net         2002-04-08 19:08  2002.04.29  
DBgrid - подходы к сохранению настроек грида


1-94356           MVova                 2002-04-16 17:19  2002.04.29  
Количество тактов процессора


4-94605           Ogu                   2002-02-20 22:05  2002.04.29  
AVI на АПИ


1-94408           Коля                  2002-04-18 05:49  2002.04.29  
FontName To String?


14-94574          False                 2002-03-20 12:28  2002.04.29  
Какое расширение имееи Oracle?