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

Вниз

Процедурные типы   Найти похожие ветки 

 
SPeller ©   (2002-05-21 15:32) [0]

Привет! Помогите пожалуйста разобраться с процедурными типами. В справке эта тема плохо освещена.
Код такой:

type
TForm1 = class(TForm)
....
function Hookproc(hc,wParam:longint;lParam:pcwpretstruct):longint;
private
hhook:longint;
Hooker:function(hc,wParam:longint;lParam:pcwpretstruct):longint;
public
...
end;

implementation

procedure TForm1.SomeProc;
begin
hooker:=hookproc; // Тут ошибка, хотя как в хелпе
...
end;

function TForm1.Hookproc(hc,wParam:longint;lParam:pcwpretstruct):longint;
begin
...
end;


Так вот. Объясните мне пожалуйста, как присвоить переменной Hooker функцию Hookproc, чтобы адрес её можно было передать в АПИ функцию(Хук в моём случае). Делаю как в хелпе, не хотит, ошибка вылазит. И второй вопрос: правильно ли описываю функцию, которая будет callback"ом (Hookproc).
Чего-то я не въезжаю, объясните пожалуйста!!!


 
PVOzerski ©   (2002-05-21 15:46) [1]

Во-первых, Вы чуточку ошиблись. Описание процедурной переменной в том виде, как Вы ей описали, предполагает присвоение ей "автономной" функции уровня вложенности 0, а не метода класса. Коль скоро Вы планируете присваивать метод, извольте описывать
Hooker:function(hc,wParam:longint;lParam:pcwpretstruct):longint of object;
Дело в том, что обычная процедурная переменная по сути - указатель на точку входа, а вот процедурная переменная of object - связка двух указателей - на код и на данные.

Во-вторых, если бы Вы присваивали не метод, а обычную функцию,
разных версиях Delphi было бы по-разному. Ваш пример прекрасно пошел бы на D2, а вот в более новых версиях иногда необходимо добавлять адресный оператор @ (детальнее сообщить не могу: надо специально подбирать примеры и тестировать их, так что просто поверьте).



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
3-6893
Shkolnik
2002-05-13 10:21
2002.06.03
Забыл книгу не у кого спросить, помогите !


1-7065
Smok_er
2002-05-19 02:47
2002.06.03
Помогите пожалуйста с анализом строки


1-7009
ppcat
2002-05-23 13:49
2002.06.03
Интерактивный построитель отчетов


1-7036
Aleksandr
2002-05-21 15:15
2002.06.03
Как лучше организовать структуру хранения WHERE?


3-6913
Korals
2002-05-10 17:17
2002.06.03
Не работает Windows XP + BDE+Novell