Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Узнать адрес в программе вызова процедуры   Найти похожие ветки 

 
Влад Сташневский   (2004-05-04 20:35) [0]

Например:


procedure olala;
begin
 beep;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 alala;//нужно узнать вот этот адрес
       //не адрес проц.alala а место откуда её вызвали(адрес)
 ShowMessage("olala");
end;



Если это возможно


 
Игорь Шевченко ©   (2004-05-04 20:51) [1]

procedure DummyProc;
var
Callee: Integer;
begin
 asm
   push [ebp+4]
   pop Callee
 end;
 ShowMessageFmt("Called from %.8x", [Callee]);
end;

procedure TfMain.Button1Click(Sender: TObject);
begin
 DummyProc;
end;


Этот пример работает, но в каждом конкретном случае нужно полазить с отладчиком, чтобы узнать код пролога процедуры.


 
Влад Сташневский   (2004-05-04 21:12) [2]


> Игорь Шевченко ©

Спасибо.
Только показывает адрес следующей строки после вызова процедуры
Хотя мне так и нужно было.


 
Defunct ©   (2004-05-04 21:17) [3]

> Игорь Шевченко ©   (04.05.04 20:51) [1]

или так:

procedure olala;
begin
beep;
end;

procedure TForm1.Button2Click(Sender: TObject);
var Callee:integer;
Begin
 Asm
     call @@L1
@@L1: pop  callee
 End;

 alala;
 ShowMessage(Format("Callee from %.8x",[Callee+1]));
end;


 
Игорь Шевченко ©   (2004-05-04 21:39) [4]

[3] Defunct ©   (04.05.04 21:17)

Я бы посоветовал взять в руки отладчик и внимательно проверить адреса. Ваш пример показывает неверный адрес (ошибается на 2).

Кроме того, почувствуйте принципиальную разницу между моим примером и вашим в случае вызова процедуры olala из более чем одной точки.



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
11-1068822136
SPeller
2003-11-14 18:02
2004.05.16
Предложение по устройству KOL.PAS


11-1069751193
Ал
2003-11-25 12:06
2004.05.16
Сделал .hlp с помощью MS Help Workshop. Под Win XP - глюк!


1-1083117685
-=[SDA]=-
2004-04-28 06:01
2004.05.16
Панель в QuickReport!!! -> false!!!


1-1083219222
WondeRu
2004-04-29 10:13
2004.05.16
GetDIBBits - нот а гуд!!!


1-1083426139
Viner
2004-05-01 19:42
2004.05.16
Возможность вставки рисунков