Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
1-10834
Zheks
2003-08-21 16:04
2003.09.04
Переноска файлов с изменением имени файла


1-10712
___Nikolay
2003-08-25 07:00
2003.09.04
Нужно, чтобы C O M B O B O X выпадал


1-10756
Onward
2003-08-25 02:23
2003.09.04
DBGrid и его свойства...


3-10601
Relaxxx
2003-08-13 12:29
2003.09.04
Обязательно ли нужно инсталировать кл. часть Oracle для программы


3-10630
Alex Bredin
2003-08-13 10:51
2003.09.04
Синхронизация БД через Интернет




   Наверх