Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизКак сохранить совместимость при передаче указат. на объект в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c