Вниз
Скачать: CL | DM;

Помогите разобраться с CallBack-вызовами   Найти похожие ветки 

← →
repo   (2003-09-19 13:40) [0]

Наверное я просто чего-то не понимаю, вот простой пример:

...
public
procedure IncLabel(_Value:LongInt);

type
TMyCallBack = procedure (CurrValue:LongInt);

procedure ExecuteInc(CallBackFunc: TMyCallBack);

implementation

//Процедура, в которой используется CallBack
procedure ExecuteInc(CallBackFunc: TMyCallBack);
Var
i: LongInt;
Begin
For i:=1 to 1000000 do CallBackFunc(i);
End;

//Сама CallBack - ф-ия
procedure TForm1.IncLabel(Digit:LongInt);
Begin
Label1.Caption:=IntToStr(Digit);
Label1.Repaint;
End;

//Вызов процедуры
procedure TForm1.Button1Click(Sender: TObject);
begin
ExecuteInc(@TForm1.IncLabel);
end;


При вызове это все говорит Access violation... Read of address FFFFFFFF


← →
Sandman25 ©   (2003-09-19 13:41) [1]

Это должна быть процедура, а не метод.


← →
repo   (2003-09-19 14:17) [2]

О, точно. А что, метод точно никак нельзя использовать?


← →
icWasya ©   (2003-09-19 14:23) [3]

type
TMyCallBack = procedure (CurrValue:LongInt) of object;


← →
repo   (2003-09-19 14:29) [4]

>TMyCallBack = procedure (CurrValue:LongInt) of object;

при вызове пишет: несовместимые типы TMyCallBack и Pointer


← →
Unknown   (2003-09-19 14:44) [5]

http://mazurkin.virtualave.net/papers/11callback/index.html


← →
PVOzerski ©   (2003-09-19 14:44) [6]

А зачем именно метод-то? Если надо добраться до полей.свойств объекта, Вы их все равно из метода.callback"а не увидете, даже если-таки выдерете из связки двух указателей тот, что на код. Метод получает Self как неявный параметр, кто его передаст при вызове callBack"а? Я бы присвоил значение Self глобальной переменной (или ThreadVar"у, хотя этот вариант не проверял), callback сделал бы "автономной" процедурой и из него через эту глобальную переменную до всего нужного добрался.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
3-3724
Alexei Klimov
2003-09-13 09:50
2003.10.02
Фильтр


4-4170
XAMLO
2003-07-31 00:19
2003.10.02
Showmessage на чистом API?


3-3773
Юлия
2003-09-15 07:37
2003.10.02
Вопрос по установке программы


3-3712
SergeyM
2003-09-14 15:40
2003.10.02
Поиск


14-4047
Красная майка
2003-09-04 10:41
2003.10.02
И снова MMP (Moscow Mastak Party ;)!!! Встреча Мастаков в Москве!




   Наверх