![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Метод класса в качестве CallBack функции [D7]
yurikon © (2012-12-18 18:26:00)Приветствую всех!
Такой вопрос, возможно ли использовать метод класса в качестве коллбэк функции, но так, чтобы вызывался метод конкретного экземпляра класса, то есть были доступны все поля экземпляра???
Сейчас обратный вызов идет, но все поля не доступны. То есть метод вызывается как class function без доступа к данным экземпляра класса.
Поиск выдает только вопросы типа "Это реально ???"
С уважением, Юрий
брат Птибурдукова (2012-12-19 17:53:00) [1]Что-то сервак тормозит и 500 ошибку кидает... Нас досят?
брат Птибурдукова (2012-12-19 17:50:00) [2]
> Германн © (19.12.12 02:45) [8]
Я вчера с классовым методом реализовать EnumWindows не сумел.
брат Птибурдукова (2012-12-19 17:49:00) [3]
> Германн © (19.12.12 02:45) [8]
Я вчера с классовым методом реализовать EnumWindows не сумел.
Медвежонок Пятачок (2012-12-19 13:40:00) [4]Еще раз: к колбеку твой вопрос никак не относится.
function pure_callback(ParamList) : something;
begin
result := Form1.Callback(ParamList);
end;
yurikon (2012-12-19 13:30:00) [5]
> Не путайте вызов метода класса с вызовом классовой процедуры.
Я не путаю.
Значит есть прототип функции обратного вызова. Никаких дополнительных параметров, в которые можно было бы запихать ссылку на объект нет. Менять эту функцию я не могу.
У меня есть объект, метод этого объекта мне нужно зарегистрировать в качестве callback. Я это сделал. Но когда callback вызывается - все свойства объекта имеют значение Inaccessble value. То есть метод вызывается, как "классовая функция" без привязки к конкретному экземпляру.
Возможно ли в Делфи 7 (может в старших версия) использовать в качестве коллбэка метод экземпляра класса с сохранением доступа к другим свойствам этого экземпляра? Может каким обходным путем.
Германн (2012-12-19 02:45:00) [6]
> yurikon (18.12.12 19:00) [4]
>
> Как в анекдоте - есть нюанс. При вызове метода в коде делфи,
> там первым параметров неявно передается указатель на объект.
> А вот в случае коллбэка что-то не выходит. ((
>
Не путайте вызов метода класса с вызовом классовой процедуры.
Медвежонок Пятачок (2012-12-18 19:10:00) [7]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1355841916&n=18
пост номер три.
никаких ньюансов нет.
Медвежонок Пятачок (2012-12-18 19:08:00) [8]что-то не выходит. ((
не выходит если тип колбэк функции определен не как метод класса.
в этом случае хоть колбак хоть простой вызов обломается. разницы никакой.
Dimka Maslov (2012-12-18 19:01:00) [9]Не надо изголяться. Пишешь рядом отдельную callback функцию. А в качестве доп.параметра (все callback функции имеют доп. параметр) - указатель на экземпляр объекта, класса, чего угодно.
yurikon (2012-12-18 19:00:00) [10]Как в анекдоте - есть нюанс. При вызове метода в коде делфи, там первым параметров неявно передается указатель на объект. А вот в случае коллбэка что-то не выходит. ((
Медвежонок Пятачок (2012-12-18 18:56:00) [11]А с чего бы им не быть доступными?
метод же не знает кто и как его вызвал.
просто так или в качестве колбэка.
yurikon (2012-12-18 18:54:00) [12]А свойства и поля экземпляра, чей метод прописан в callback, будут доступны?
Медвежонок Пятачок (2012-12-18 18:29:00) [13]у классовых методов к полям класса вообще доступа нет. и быть не может.
ps метод класса как callbak возможен и легко. и как обычно.