Текущий архив: 2004.03.14;
Скачать: CL | DM;
ВнизПередача в BPL(DLL) DataSet или IBDataBase Найти похожие ветки
← →
kirill_bezrukov (2004-03-01 22:04) [0]Необходимо, чтобы форма отображения набора данных загружалась из внешнего модуля BPL (DLL). Как правильно передать набор данных?
В случае пакета хотелось использовать только экспортированные фунции делаю так:
procedure EcexForm(ADataSet: DataSet);
begin
with TfMain.Create(Application) do
begin
dsDataSource.DataSet := ADataSet;
dsDataSource.DataSet.Open;
try
ShowModal;
finally
Free;
end;
end;
end;
В BPL возникает ошибка Invalid Pointer Operation на ShowModal;
В DLL (при динамической загрузке) не выгружается библиотека на FreeLibrary
Загрузка, лучше статическая
← →
Игорь Шевченко (2004-03-02 00:40) [1]http://www.delphikingdom.com/mastering/plugins.htm
← →
kirill_bezrukov (2004-03-02 10:29) [2]Я же говорил мне надо именно экспортивовать функцию, а не абстактный класс. Этот пример не удобен для меня.
Я пишу:
exports
ExecForm;
end.
И загружаю пакет статически:
procedure ExecForm(ADataSet: DataSet); external "DBSelectForm.bpl"
← →
Игорь Шевченко (2004-03-02 10:46) [3]kirill_bezrukov (02.03.04 10:29)
Build with run-time packages не лучше ?
← →
Kirill Bezrukov (2004-03-02 11:07) [4]Там функции неудобно импортировать у них имена не такие как в коде получаются... И потом, для этого надо редактировать файл проекта... А задача заключается в декомпозиции системы, т.е. надо чтобы как можно меньше манипулаций происходило для подключения модулю... Если dpr"ов будет 10 и пакетов 10 то уже геморойно.. А так подключит юнит с интерфейсами и все...
Сейчас проверял, ошибка даже на ShowMessage возникает, говорит Invalid Pointer Operation...
Может вообще нельзя таким образом с пакетами работать, а только через RegisterClass?
← →
Mystic (2004-03-02 11:35) [5]
> Там функции неудобно импортировать у них имена не такие
> как в коде получаются...
А зачем импорт тебе нужен? Выполняй настройку плагина через секцию initialization.
> И потом, для этого надо редактировать файл проекта...
Вынеси в отдельный пакет функциональность, которая поддерживает плагины... И все проекты будут его использовать.
Пока что не видно неразрешимых проблем, поэтому не нужно придумывать новое.
← →
Игорь Шевченко (2004-03-02 11:37) [6]Kirill Bezrukov (02.03.04 11:07)
Я, честно говоря, не могу понять, в чем проблема. В той ссылке есть ссылка на более сложные методы работы с пакетами.
Насчет импортируемых имен функций - если написать, что пакет явно экспортирует функцию, то имя будет такое, как заказано, но я не вижу смысла, зачем это надо делать.
← →
Alex Konshin (2004-03-02 11:40) [7]У меня такое ощущение, что тут bpl пытаются использовать как DLL.
Либо одно, либо другое.
Или я неправильно понял, или нам неправильно объяснили.
← →
wisekaa (2004-03-02 11:55) [8]
> [4] Kirill Bezrukov (02.03.04 11:07)
> Если dpr"ов будет 10 и пакетов 10 то уже геморойно..
Один Dpr и 84 dpk ни какого гемороя. Полная Гибкость и Модульность проекта!
Работает с БД InterBase.
← →
kirill_bezrukov (2004-03-02 14:41) [9]>Alex Konshin © (02.03.04 11:40) [7]
>У меня такое ощущение, что тут bpl пытаются использовать как >DLL.
>Или я неправильно понял, или нам неправильно объяснили.
Да.
Не хочется работать, через абстрактные классы, т.к. мне надо не механизм плагинов организовать, а разделить систему на модули и интерфейсы у них разные
← →
Alex Konshin (2004-03-03 03:28) [10]А какая разница, как называть куски программы? Что "плагин" - что "модуль". Чем плохо через абстрактные клаcсы?
В конце концов можешь задействовать RTTI, раз уж у тебя bpl.
На прошлом месте работы мы делили на модули с помощью разбиения на dll. На мой взгляд, получилось удобнее для разработки, чем это было бы через bpl.
Просто у тебя не-рыба-не-мясо получается, надо либо DLL, либо BPL, и дествовать в соответствии с этим выбором, в противном случае сам же запутаешься.
Страницы: 1 вся ветка
Текущий архив: 2004.03.14;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.012 c