Форум: "Начинающим";
Текущий архив: 2012.02.05;
Скачать: [xml.tar.bz2];
ВнизПередача метода класса по ссылке Найти похожие ветки
← →
Alek (2011-10-29 01:06) [0]Добрый день.
А как правильно передать по ссылке метод класса?
Command.ResultCallback := @Self.onNavigateComplete;
Если метод выносить за рамки класса, то все работает.
← →
Alek (2011-10-29 01:33) [1]Спасибо.. нашел)
← →
Alek (2011-10-29 10:03) [2]Хотя нет.. не нашел...
Думал вот так во:
Command.ResultCallback := @TTHreadRequestsBrowser.onNavigateComplete;
Но как оказалось когда вызывается калбек и в него передается поинтер... то ссылка теряется :(.
А если все тоже самое но метод калбека вынести за рамки класса.. то все работает.
← →
Anatoly Podgoretsky © (2011-10-29 10:27) [3]Что такое Command.ResultCallback?
Какой прототип функции.
Вообще о чем речь?
← →
_Юрий (2011-10-29 10:49) [4]
> Alek (29.10.11 10:03) [2]
Метод - это на самом деле две ссылки - на код и на данные.
Вы передаете только ссылку на код, данные (Self) теряются.
Это даже видно по синтаксису:
> Command.ResultCallback := @TTHreadRequestsBrowser.onNavigateComplete;
Где тут упоминание экземпляра класса? Нету.
← →
Dimka Maslov © (2011-10-29 12:33) [5]Если ResultCallback oбъявлен как function(...) of object c параметрами, такими же как у onNavigateComplete, то:
Command.ResultCallback := Self.onNavigateComplete
Если то нет, то надо трижды подумать, а можно ли вообще так делать.
← →
DVM © (2011-10-29 22:33) [6]
> Alek (29.10.11 01:06)
> Добрый день.
>
> А как правильно передать по ссылке метод класса?
>
> Command.ResultCallback := @Self.onNavigateComplete;
>
> Если метод выносить за рамки класса, то все работает.
Если метод возможно вынести за пределы класса, но не хочется, то определи его как class function static и оставь внутри. Но это будет уже не совсем метод.
← →
Alek (2011-10-30 00:12) [7]Спасибо.
Добавил к объявлению Command.ResultCallback вот это of object и заработало из класса.
← →
Юрий Зотов © (2011-10-30 14:02) [8]
> Alek (30.10.11 00:12) [7]
> Добавил к объявлению Command.ResultCallback вот это of object
> и заработало из класса.
Посмотрите в коде VCL объявление любого события. Это ведь тот же самый callback, по сути своей.
Ну и в справке то же самое глянуть не помешает, для полного понимания.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.02.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c