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

Вниз

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

 
Darvin ©   (2007-05-16 10:35) [0]

Мне необходимо в переменной типа pointer хранить ссылку на процедуру (метод класса), а затем вызвать эту процедуру по ссылке. Пишу так:
type
 TMyMethod = procedure (A : Integer) of object;
 
 TMyClass = class
   procedure MyMethod  (A : Integer);
   ...
 end;

var
 P : Pointer;
 I : Integer;

begin
 P := @MyMethod;
 ...
 TMyMethod(P^) (I); <- Возникает Access violation

Как правильно решить эту задачу?


 
Плохиш ©   (2007-05-16 10:52) [1]


> TMyMethod(P) (I);

Без крышки.


 
Darvin ©   (2007-05-16 10:58) [2]

>Плохиш ©   (16.05.07 10:52) [1]
TMyMethod(P) (I);
                    \__ Invalid typecast


 
Плохиш ©   (2007-05-16 11:26) [3]

var  tmpMethod: TMyMethod;
...
@tmpMethod := P;
tmpMethod(I);
...


 
Darvin ©   (2007-05-16 11:55) [4]

> Плохиш ©   (16.05.07 11:26) [3]
Все равно AV при вызове метода


 
MBo ©   (2007-05-16 12:02) [5]

var
 M: TMethod;
 C: TMyClass;
begin
 C:= TMyClass.Create;
 M.Data := C;
 M.Code := @TMyClass.MyMethod;
 TMyMethod(M)(5);
 C.Free;


 
Darvin ©   (2007-05-16 14:29) [6]

> MBo ©   (16.05.07 12:02) [5]
Спасибо, работает. Не знал про такой метод....
Век живи, век учись... ;-)



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1179233486
MegaVolt
2007-05-15 16:51
2007.06.03
Как вывести WordWrap Disable текст так как это сделано на Button?


2-1178994617
FIL-23
2007-05-12 22:30
2007.06.03
работ с edit


2-1178960077
mr1Andersen
2007-05-12 12:54
2007.06.03
Что можно(нужно) сделать, чтобы Delphi запомнил


15-1178195654
oldman
2007-05-03 16:34
2007.06.03
Что могло случиться с флэшкой?


4-1167142342
MasteroK
2006-12-26 17:12
2007.06.03
Как извлечь из буфера обмена первые N символов текста.