![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 10.03.2008
Сообщений: 68
|
![]()
Начал изучать классы в C++, столкнулся с понятиями слота и сигнала. Прочитал про connect, SIGNAL и SLOT, и стало интересно, как было все реализовано в Delphi, где я раньше кодил и уютнее себя чувствал
![]() Первый пример, который я решил разобрать - это событие Button1.OnClick. Я так понимаю, в Delphi C-подобный код создается автоматически: Код:
Код:
Код:
Тогда я решил создать свой класс, сделать событие, и привязать обработчик к этому событию. Если бы он ругался бы на обработчик без параметров, а на обработчик с параметром TObject - нет, тогда всё ясно, Delphi всегда передает в обработчик Sender'а, независимо ни от чего другого. То есть, даже если SIGNAL будет без параметров. Однако, я такое только попытался сделать, и тут же возникли проблемы. Вот код, при нажатии на кнопку вылетает AccessViolation, из-за чего он возникает и как его исправить - я не знаю. Код: Код:
P.S. Классы начал изучать в C++, потому что в универе мы их проходим. А почему вспомнил про Delphi? Потому что за ним сижу уже 4 года, а за C++ - только полгода, поэтому и интересуюсь, как это устроено в Delphi. Ааа, может надо писать: Код:
Код:
У нас для оформления кода есть кнопка #. Попрошу ее использовать. Последний раз редактировалось Stilet; 01.11.2010 в 09:59. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
TMyObj.Create; вызывается метод указанного класса TMyObj
Form1.MyObj.Create; вызывается метод конкретного объекта Form1.MyObj. а он (этот объект) вдобавок еще и не существует ->AccessViolatiuon. чтобы объект существовал он должен быть создан Form1.MyObj := TMyObj.Create; Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Кто-нибудь что-нибудь понял???
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 10.03.2008
Сообщений: 68
|
![]()
Пока упрощю вопрос:
Почему при задании обработчика событий button1.onClick создается процедура Button1Click(Sender: TObject) именно с таким параметром (процедура имеет именно такой прототип)? Почему если я хочу присвоить обработчик без параметров - делфи ругается? |
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Не получится присвоить на OnClick обработчик, описанный отличнительно от типа TNotifyEvent
I'm learning to live...
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача по классам | emnm | Общие вопросы C/C++ | 8 | 19.10.2010 23:14 |
Задача по классам | Эльдар 18 | Общие вопросы C/C++ | 3 | 24.09.2010 00:38 |
Вопрос по классам делфи и их использованию. | Solrainer7 | Общие вопросы Delphi | 6 | 12.07.2010 19:16 |
Вопросы по классам | JOFRIF | Общие вопросы C/C++ | 19 | 23.08.2009 05:43 |