![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Понимание событий и обработчиков в Delphi: сравнение и предотвращение ошибокDelphi , Алгоритмы , КомпиляторыСравнение события и его соответствующего обработчика в DelphiВ процессе разработки на Delphi может возникнуть необходимость проверки, назначен ли определенный обработчик событию. Например, вам нужно убедиться, что обработчик ПроблемаПример кода, который пытается проверить связь обработчика с событием:
В этом случае компилятор выдает ошибку E2035, так как не хватает параметров для сравнения. Попытка использовать адреса обработчика и события приводит к ошибке E2036, указывающей на необходимость переменной. РешениеОбработчики событий в Delphi реализованы как замыкания (closures), которые содержат два указателя: один на скрытый параметр
Следует отметить, что сравнение полей С версии XE3, когда были добавлены перегруженные операторы для
ЗаключениеПри работе с событиями и их обработчиками в Delphi важно понимать, как устроены замыкания и какие существуют способы сравнения указателей на обработчики. Использование записи Этот метод актуален для версий Delphi начиная с XE3 и выше, где поддерживается сравнение записей Объектно-ориентированное программирование: решение привести строгому контролю соответствия событий их обработчиков в Delphi через получение и проверку кодов замыканий событий с помощью записи TMethod. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Компиляторы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |