Главная страница
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.16 c
1-1083315265
ikivio
2004-04-30 12:54
2004.05.16
Шифровка файлов с помощью CryptoApi


1-1083674882
Girder
2004-05-04 16:48
2004.05.16
Как быстро удалить указатель из списка


1-1082980938
Дас Виндовс 45
2004-04-26 16:02
2004.05.16
Как определить язык, используемый по умолчанию?


4-1080324764
DelphiN!
2004-03-26 21:12
2004.05.16
Как считать информацию из буфера обмена Windows?


3-1082363789
}|{yk
2004-04-19 12:36
2004.05.16
Как бы переписать такой запрос на Interbase