Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2018.01.07;
Скачать: [xml.tar.bz2];

Вниз

Метод класса в качестве CallBack функции   Найти похожие ветки 

 
yurikon   (2012-12-18 18:26) [0]

Приветствую всех!

Такой вопрос, возможно ли использовать метод класса в качестве коллбэк функции, но так, чтобы вызывался метод конкретного экземпляра класса, то есть были доступны все поля экземпляра???

Сейчас обратный вызов идет, но все поля не доступны. То есть метод вызывается как class function без доступа к данным экземпляра класса.

Поиск выдает только вопросы типа "Это реально ???"

С уважением, Юрий


 
Медвежонок Пятачок ©   (2012-12-18 18:29) [1]

у классовых методов к полям класса вообще доступа нет. и быть не может.

ps метод класса как callbak возможен и легко. и как обычно.


 
yurikon   (2012-12-18 18:54) [2]

А свойства и поля экземпляра, чей метод прописан в callback, будут доступны?


 
Медвежонок Пятачок ©   (2012-12-18 18:56) [3]

А с чего бы им не быть доступными?

метод же не знает кто и как его вызвал.
просто так или в качестве колбэка.


 
yurikon   (2012-12-18 19:00) [4]

Как в анекдоте - есть нюанс. При вызове метода в коде делфи, там первым параметров неявно передается указатель на объект. А вот в случае коллбэка что-то не выходит. ((


 
Dimka Maslov ©   (2012-12-18 19:01) [5]

Не надо изголяться. Пишешь рядом отдельную callback функцию. А в качестве доп.параметра (все callback функции имеют доп. параметр) - указатель на экземпляр объекта, класса, чего угодно.


 
Медвежонок Пятачок ©   (2012-12-18 19:08) [6]

что-то не выходит. ((

не выходит если тип колбэк функции определен не как метод класса.

в этом случае хоть колбак хоть простой вызов обломается. разницы никакой.


 
Медвежонок Пятачок ©   (2012-12-18 19:10) [7]

http://delphimaster.net/view/2-1355841916/

пост номер три.
никаких ньюансов нет.


 
Германн ©   (2012-12-19 02:45) [8]


> yurikon   (18.12.12 19:00) [4]
>
> Как в анекдоте - есть нюанс. При вызове метода в коде делфи,
>  там первым параметров неявно передается указатель на объект.
>  А вот в случае коллбэка что-то не выходит. ((
>

Не путайте вызов метода класса с вызовом классовой процедуры.


 
yurikon   (2012-12-19 13:30) [9]


> Не путайте вызов метода класса с вызовом классовой процедуры.

Я не путаю.

Значит есть прототип функции обратного вызова. Никаких дополнительных параметров, в которые можно было бы запихать ссылку на объект нет. Менять эту функцию я не могу.

У меня есть объект, метод этого объекта мне нужно зарегистрировать в качестве callback. Я это сделал. Но когда callback вызывается - все свойства объекта имеют значение Inaccessble value. То есть метод вызывается, как "классовая функция" без привязки к конкретному экземпляру.

Возможно ли в Делфи 7 (может в старших версия) использовать в качестве коллбэка метод экземпляра класса с сохранением доступа к другим свойствам этого экземпляра? Может каким обходным путем.


 
Медвежонок Пятачок ©   (2012-12-19 13:40) [10]

Еще раз: к колбеку твой вопрос никак не относится.

function pure_callback(ParamList) : something;
begin
result := Form1.Callback(ParamList);
end;


 
брат Птибурдукова   (2012-12-19 17:49) [11]


> Германн ©   (19.12.12 02:45) [8]
Я вчера с классовым методом реализовать EnumWindows не сумел.


 
брат Птибурдукова   (2012-12-19 17:50) [12]


> Германн ©   (19.12.12 02:45) [8]
Я вчера с классовым методом реализовать EnumWindows не сумел.


 
брат Птибурдукова   (2012-12-19 17:53) [13]

Что-то сервак тормозит и 500 ошибку кидает... Нас досят?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2018.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.001 c
2-1454482656
lewka
2016-02-03 09:57
2018.01.07
Звук видео


2-1454596323
victor
2016-02-04 17:32
2018.01.07
Тела вращения


1-1355840766
yurikon
2012-12-18 18:26
2018.01.07
Метод класса в качестве CallBack функции





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