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