Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c