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

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

COM-сервер и procedural var [D7]


Страницы:   1 2

tesseract ©   (2006-03-14 17:14:00) 

Имеется такая тема (Com-сервер).

Объявлен родитель у которого имеется  свойство TProcs:array of TCallProc;

TCallProc=procedure (var param:integer) of object;

При загрузке объекта массив соотвественно заполяется процедурами из класса наследника.

И всё ОК - за исключением того, что если попытаться вызвать из присвоенной процедуры какую либо процедуру или получить значение из класса-родителя, то AccessViolation.

Кто нибудь может помочь?


tesseract   (2006-03-15 10:03:00) [21]


> так просто такого не бывает. значит где-то есть кривизна.
>  Может объект и правда где-то случайно убивается


Вот в том-то и прикол. После того, как функция возвращает результат. То объект работает как ни в чём не бывало!

Возможно (я в Com я не очень силён), проблема в том что поля находяться в адресном простанстве клиента, а моя функция выполянется в пространстве сервера.  Тогда возникает следующий вопрос - как эту функцию выполнить в контексте клиента?

AV вообще возникает весело - можно посмотреть как поля в памяти располагаются. Смещение AV всегда одно :-)


clickmaker   (2006-03-15 09:49:00) [22]


> при вызове процедуры я теряю поля объекта

так просто такого не бывает. значит где-то есть кривизна. Может объект и правда где-то случайно убивается


tesseract   (2006-03-14 22:19:00) [23]


> пример кода с AV?

Да длинноват он. И AV я анализирую сам через try/except.

Как я понял при вызове процедуры я теряю поля объекта (как будто он не создан).
Но таблица методов остаётся нетронутой. Это и вызывает AV - как если бы я вызывал методы несозданного объекта.

Весело - методы теоретически должны входить в "рабочее пространство " объекта ибо там и объявлены.


clickmaker   (2006-03-14 17:56:00) [24]


> tesseract ©   (14.03.06 17:14)

пример кода с AV?


Страницы:   1 2

Наверх

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