Главная страница
    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.46 MB
Время: 0.012 c
3-43399
jenya_d
2004-02-13 11:13
2004.03.14
Как сделать UNION во VIEW в IB5.5


3-43350
GogaStar
2004-02-16 13:52
2004.03.14
Как побороть


3-43307
tomek
2004-02-11 20:50
2004.03.14
Interbase драйвер


14-43847
Sergey13
2004-02-17 09:38
2004.03.14
Глюк или фича? Копирование файлов.


1-43441
Ivan
2004-03-01 09:24
2004.03.14
Как программно перенести табличку из StringGrid в Excel?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский