Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизВызов метода процедурного типа Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c