![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Описание классов [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]Удалено модератором