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

Вниз

Callback function   Найти похожие ветки 

 
Sodom ©   (2003-05-19 13:12) [0]

В общем тема такая. Я сделал функцию обратного вызова, ей я передаю один из параметров адрес функции, котороя вызывается из нее. Не работае если эта вызываемая функция является методом класса или находится внутри другой функции. В общем из кода думаю сьанет все ясно.

type
TFunc=function(b:byte):boolean; stdcall;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
function D(b:byte):boolean; stdcall;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function B(b:byte):boolean; stdcall;
begin
ShowMessageFmt("%d",[b]);
end;
function TForm1.D(b:byte):boolean; stdcall;
begin
ShowMessageFmt("%d",[b]);
end;
function A(f:TFunc):boolean; stdcall;
var i:integer;
begin
for i:=1 to 3 do f(i);
end;
procedure TForm1.FormCreate(Sender: TObject);
var m:TFunc;
function C(b:byte):boolean; stdcall;
begin
ShowMessageFmt("%s%d",["aa ",b]);
end;
begin
{1} m:=B;
{2} m:=C;
{3} m:=D;
A(@m);
end;
end.

Вариент {1} работает. А вот {2} и {3} нет. А хотелось бы что бы работали. Кто нить знает в чем дело?


 
MBo ©   (2003-05-19 13:17) [1]

метод класса - function(...):... of object

вложенная функция видна только в своем контейнере


 
Anatoly Podgoretsky ©   (2003-05-19 13:52) [2]

Ну желание это вещь хорошая, но только не выполнимое, разное количество параметров.


 
Sodom ©   (2003-05-19 14:18) [3]


>to Anatoly Podgoretsky

О каких параметрах ты говоришь? Вроде везде один b:byte.


 
Skier ©   (2003-05-19 14:26) [4]

>Sodom © (19.05.03 14:18)
+ неявный Self


 
Sodom ©   (2003-05-19 14:38) [5]


> Skier
И как с этим бороться?


 
Skier ©   (2003-05-19 14:40) [6]

>Sodom © (19.05.03 14:38)
Желательно мозг подключить ! :)


 
app ©   (2003-05-19 14:48) [7]

Sodom © (19.05.03 14:38)
Вариант номер 1



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
14-95061
qwantum
2003-05-08 07:21
2003.05.29
Трафик


14-95120
anton2v
2003-05-12 13:30
2003.05.29
Доступ к SQL Server из инета


7-95136
acsoft
2003-03-31 08:00
2003.05.29
Как программно скопировать нужные ключи реестра в файл *.reg


1-94963
andrey_pst
2003-05-18 13:27
2003.05.29
PopUp-меню в стиле XP


6-94986
Puzzle
2003-03-26 18:43
2003.05.29
Indy idFTP - как определить, что соединение разорвано?