Форум: "Потрепаться";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Внизопределить адрес процедуры из нее самой Найти похожие ветки
← →
MBo (2002-03-18 16:13) [0]В конференции Borland встретился вопрос (вообще-то, по моему, нелепый), сводящийся к тому, как определить Subj.
Получилось у меня так:
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;
Но более радикально было бы для этого вызывать внешнюю по отношению к данной процедуре функцию.
function ACaller:pointer;
asm
mov eax, [esp]
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
var p,p1:pbyte;
begin
p1:=ACaller;
dec(p1,53);//Magic Number
p:=methodaddress("CheckBox1Click");//для контроля
label3.caption:=inttohex(cardinal(p),8);
label4.caption:=inttohex(cardinal(p1),8);
label2.caption:=classname+"."+methodname(p1);
end;
Так работает, но Magic Number, естественно, зависит от пролога данной процедуры и может меняться. Полагаю, методы для subj можно найти,(кроме methodaddress и @procname, естественно). Идеи есть?
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c