Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.021 c
3-43274
Sesh
2004-02-12 17:39
2004.03.14
ProcessMassages при выполнении SQL запроса


3-43314
Марат
2004-02-12 12:42
2004.03.14
Копирование с сервера на сервер


7-43926
KIE
2003-12-22 13:54
2004.03.14
Работа с модемом


14-43807
Andersen
2004-01-23 13:59
2004.03.14
Локомотив - Монако


1-43601
Denis_Visma
2004-03-03 18:21
2004.03.14
Проблемы с азмерами Image