Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

Как сохранить совместимость при передаче указат. на объект в DLL?   Найти похожие ветки 

 
Vorobyev Sergey   (2003-08-21 08:33) [0]

Привет всем!
Объясню вопрос на примере..

Есть определенный класс
TMySuperClass = class(TObject)
private
...
protected
...
public
property Count:integer read GetCount write SetCount;
...
end;

определяю переменную этого класса
var
SimpleObject: TMySuperClass;

далее в программе создаю его, определяю некоторые свойства и т.п., а затем передаю этот указатель в DLL
...
FirstDLLFunction(SimpleObject);
...

далее DLL работает с ним как ей необходимо, естественно для использования этого объекта в DLL там используется Unit с описанием этого класса.

Теперь сам вопрос.. Представим случай, когда:
1. Изменилось описание класса, например, добавилось пара свойств или методов.
2. Был создан дочерний класс (TMySuperClassChild) и объект SimpleObject определили этим классом..

Естественно при передаче в функцию DLL этого указателя (FirstDLLFunction(SimpleObject)) получаются ошибки.. (проверял)
Необходимо перекомпилить DLL..

ВОПРОС: А как сделать так, чтобы DLL не надо было перекомпилировать? Т.е. она была когда-то создана и работает себе.. Может даже исходников не осталось.. Но у класса прибавилось функциональности (см. п.1), либо это вообще дочерний класс (см. п.2) и если DLL будет вызывать эти методы, то они сработают в соответствии с новой функциональностью..
Как тут быть?
И как вы в таких случаях поступаете?

Надеюсь, понятно объяснил..
Спасибо за внимание!


 
Семен Сорокин ©   (2003-08-21 10:22) [1]

никак - только перекомпилировать или использовать интерфейсы.
для того чтобы два раза не писать объявление класса используй директиву $I
а вообще посмотри здесь:
http://www.delphimaster.ru/articles/book/Chap09.pdf


 
Юрий Федоров ©   (2003-08-21 10:53) [2]

попробуй через интерфейсы, новых методов конечно без перекомпиляции не добавишь, а вот реализацию существующих можно будет менять


 
Vorobyev Sergey   (2003-08-23 10:19) [3]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
3-10616
stud
2003-08-13 12:08
2003.09.04
права доступа к базе


14-10930
MonStar
2003-08-16 17:17
2003.09.04
Помогите с архивацией!!!!!!!!!!!!!!


8-10844
dronas555
2003-05-06 12:08
2003.09.04
Формат BMP


14-10921
Pitay
2003-08-17 20:25
2003.09.04
Ну скажите мне пожалуйста!!! что я делаю не так?


4-11013
Nick Denry
2003-07-05 20:49
2003.09.04
9x и wm_devicechange. в SDK написано -нет такой мессаги в 9x