Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.038 c
6-1164270644
Cawa
2006-11-23 11:30
2007.06.03
IDHTTP некорректная докачка файла


11-1161100472
Sapersky
2006-10-17 19:54
2007.06.03
OnEndEditLVItem


2-1179101593
Gringoire
2007-05-14 04:13
2007.06.03
Запрос SQL


3-1173879416
Vladisllav
2007-03-14 16:36
2007.06.03
Связь двух таблиц Ib в Delphi


3-1174067912
RaWen
2007-03-16 20:58
2007.06.03
Delphi+excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский