![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
VMT
nomshar © (2004-08-26 12:26:00)Слышал, что методы класса можно вызывать на основе смещения по адресу в таблице виртуальных методов. Господа, подскажите, как это сделать. Либо, где начать копать.
Семен Сорокин (2004-08-26 12:41:00) [1]http://www.delphimaster.ru/articles/callprivate/index.html
Анонимщик (2004-08-26 12:41:00) [2]nomshar
Хотя все господа в Париже, все-таки отвечу.
var
pNew: Pointer;
begin
with ClassInfo_SG do
begin
Cells[0, 0] := 'ЭЛЕМЕНТ';
Cells[1, 0] := 'СМЕЩЕНИЕ';
Cells[2, 0] := 'ЗНАЧЕНИЕ';
Cells[0, 1] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ВИРТУАЛЬНЫХ МЕТОДОВ';
Cells[0, 2] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ИНТЕРФЕЙСОВ';
Cells[0, 3] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ АВТОМАТИЗАЦИИ';
Cells[0, 4] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ИНИЦИАЛИЗАЦИИ ЭКЗЕМПЛЯРОВ';
Cells[0, 5] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ТИПОВ ИНФОРМАЦИИ';
Cells[0, 6] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ОПРЕДЕЛЕНИЙ ПОЛЕЙ';
Cells[0, 7] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ОПРЕДЕЛЕНИЙ МЕТОДОВ';
Cells[0, 8] := 'УКАЗАТЕЛЬ НА ТАБЛИЦУ ДИНАМИЧЕСКИХ МЕТОДОВ';
Cells[0, 9] := 'УКАЗАТЕЛЬ НА SHORTSTRING, СОДЕРЖАЩУЮ ИМЯ КЛАССА';
Cells[0, 10] := 'РАЗМЕР ЭКЗЕМПЛЯРА В БАЙТАХ';
Cells[0, 11] := 'УКАЗАТЕЛЬ НА УКАЗАТЕЛЬ КЛАССА-ПРАРОДИТЕЛЯ';
Cells[0, 12] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА SafecallException';
Cells[0, 13] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА AfterConstruction';
Cells[0, 14] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА BeforeDestruction';
Cells[0, 15] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА Dispatch';
Cells[0, 16] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА DefaultHandler';
Cells[0, 17] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА NewInstance';
Cells[0, 18] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА FreeInstance';
Cells[0, 19] := 'УКАЗАТЕЛЬ НА ТОЧКУ ВХОДА МЕТОДА Destroy';
end;
basePointer := TButton; // или, например, Button1
for count := 0 to 19 do
begin
pNew := Pointer(Integer(basePointer) - (76 - 4*count));
ClassInfo_SG.Cells[2, 1 + count] := IntToStr(Integer(pNew^));
end;
дальше идут точки входа в user-define функции
Skier (2004-08-26 12:29:00) [3]>nomshar (26.08.04 12:26)
А зачем сие ?
default (2004-08-26 12:28:00) [4]в окне CPU посмотреть...