Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
3-94685
Filat
2003-05-02 16:18
2003.05.29
Как красиво обработать отказ от логина к базе?


3-94718
Sour
2003-05-07 11:08
2003.05.29
CASE средства для БД


1-94927
Skalp
2003-05-17 16:47
2003.05.29
Почему выдает ошибку при попытке загрузки из ресурса


6-94982
VIB
2003-03-29 16:12
2003.05.29
MAC-Adress


4-95158
whiteshadow
2003-04-01 16:37
2003.05.29
Click-through windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский