Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Описание классов [D5]


Satrap ©   (2001-12-28 13:19:00) 

Уважаемые мастера, ответьте на вопрос, можно ли объявлять
процедурный тип с дерективой stdcall например
type
TMyType=procedure (var Message:TMessage) of object stdcall;

при подобном объявлении параметры передаются как бы сдвинутыми влево, если кто может, помогите.


Satrap   (2002-01-06 07:39:00) [1]

большое всем спасибо за помощь


Иван Шихалев   (2001-12-28 22:27:00) [2]

прекрасно работает (кроме published)

а объявляентся так :

TMyType=procedure (var Message:TMessage) of object ;stdcall;


vuk   (2001-12-28 15:30:00) [3]

>вряд ли методы дельфишных объектов могут работать по соглашению
>stdcall
Работают. Как из ружья... Единственное ограничение по форматам вызовов - у методов доступа published свойств. Они могут быть только register.


Юрий Зотов   (2001-12-28 14:54:00) [4]

Я бы не рискнул сочетать "of object" с "stdcall". Думаю, что это приведет к ошибке при выполнении реального вызова (вряд ли методы дельфишных объектов могут работать по соглашению stdcall).

А если не сочетать, то это будет не метод объекта, а обычная процедура - и тогда почему бы и нет?

Поэтому, если уж очень нужно, то объявите просто процедуру
TMyType = procedure(var Message:TMessage); stdcall;
и уже из нее вызывайте метод объекта (ссылку на его экземпляр процедура может получить, например, через глобальную переменную).


vuk   (2001-12-28 13:56:00) [5]

Если уж "of object", то еще один параметр будет добавлен неявно. Этот параметр - указатель на экземпляр (то же, что и self в методах объектов).


Владислав   (2001-12-28 13:20:00) [6]

Удалено модератором


Наверх

Титульная страница Поиск, карта сайта Написать письмо