![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.10.2009
Сообщений: 5
|
![]()
Если кто-то сталкивался с подобной проблемой - подскажите пожалуйста.
Есть процедурный тип: Код:
Код:
Так вот, когда я создаю переменную OnChangeStateTerminal типа TermConnStateEventHandler, создаю экземпляр объекта Toolkit и пытаюсь вызвать метод CreateGUIEventHandler чтобы подключить свой обработчик события,: Код:
Подскажите в чем здесь может быть дело? Ведь по идее вызлв делаю правильно. Последний раз редактировалось AndreyCo; 28.10.2009 в 09:42. |
![]() |
![]() |
![]() |
#2 |
₪₪₪₪₪₪₪₪
Форумчанин
Регистрация: 16.04.2007
Сообщений: 471
|
![]()
Если я правильно понял, то бегин:
событие не может быть методом класса. Следовательно, вот так: MyEvent:=CreateGUIEventHandler(Term ConnStateEventHandler(OnC hangeStateTerminal),self); без параметров. И вроде б, эвенты - это процедуры а не функции... |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Зачем вообще нужна эта перегруженная функция? это обработчик?
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 | |
Регистрация: 27.10.2009
Сообщений: 5
|
![]()
"Если я правильно понял, то бегин:
событие не может быть методом класса. Следовательно, вот так:" Событие методом класса быть не может, но подключать метод в качестве обработчика события очень даже возможно. Что в данном примере и делается. Я создаю свой обработчик события и подключаю его с помощью специальных методов объекта. А поскольку я вызываю именно метод объекта, то вызов Код:
"без параметров. " А я разве где-то параметры указал? "И вроде б, эвенты - это процедуры а не функции..." OnChangeStateTerminal - это процедура чисьлй воды процедура. А CreateGUIEventHandler должно подключать мою процедуру обработки события к конкретному событию. На будущее: Вообще вопрос был о приведении процедурных типов в перегруженных методах. Попрошу анализ приведенного мною кода на корректность не делать - все приведенные примеры вырезаны из Reflrctor-а и взяты из уже работающего приложения. Там все правильно. Но вот как реализовать все это в исходном коде, я не знаю... Цитата:
Ну по поводу того, зачем нужна перегруженнная функция, это вопросы не ко мне, а к разработчикам той сборки, которую я вынужден использовать. Наверное потому, что событий объект может генерировать много и разных и они хотели, чтобы я мог их обработать? ![]() Да, это обработчик. (См. выше) Последний раз редактировалось Stilet; 28.10.2009 в 10:37. |
|
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Значит скажу так:
1. Я не понял на каком языке, посему пишу на делфи пример 2. Ты если это делфи совершенно неверно перегрузил функции Вот посмотри: Код:
И не нужно тут никаких приведений типов.
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 27.10.2009
Сообщений: 5
|
![]()
Это Делфи, только 2006.
Класс Toolkit - это не мой класс. Точнее, не я его описываю. Я беру его описание из сторонней библиотеки. Потому твой пример немного не подходит. Есть готовое описание класса Toolkit со всеми этими перегруженными методами. И там же есть описание TermConnStateEventHandler. А вот использовать этот класс, создавать экземпляр этого класса и подключать к событию этого класса свой обработчик мне надо уже в моем приложении. Может из-за того, что я пытаюсь все это сделать в 2006-ом и результаты разные? То, что работает у тебя, у меня отказывается напрочь. Вот такой подход как у тебя - без никаких приведений типов приводит вообще к убойной ошибке - Сборка [имя приложения.exe] не найдена. Я в ауте! Может из-за того, что я пытаюсь все это сделать в 2006-ом и результаты разные? То, что работает у тебя, у меня отказывается напрочь. Вот такой подход как у тебя - без никаких приведений типов приводит вообще к убойной оштбке - Сборка [имя приложения.exe] не найдена. Я в ауте! Последний раз редактировалось Stilet; 03.11.2009 в 11:47. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 27.10.2009
Сообщений: 5
|
![]()
Решение проблемы найдено, тему можно закрыть. Спасибо всем, кто откликнулся.
|
![]() |
![]() |
![]() |
#8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 27.10.2009
Сообщений: 5
|
![]()
Затык был в собственной невнимательности. Проблема была с типом не первого, а второго параметра. Form и TForm разные типы. Но пока досмотрел - нервов себе попортил....
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Приведение к типу | __Demon__ | Общие вопросы C/C++ | 1 | 27.09.2009 17:40 |
работа с классами, но трабл в функциях-методах | aka_faith | Общие вопросы C/C++ | 9 | 14.06.2009 22:26 |
Си. Преобразование типов | pif | Помощь студентам | 3 | 20.04.2009 13:54 |
Приведение задачи к каноническому виду | feniks65 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 26.12.2008 22:53 |
не соответствие типов | amandra | SQL, базы данных | 6 | 30.06.2008 18:04 |