|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разъясните пожалуйста о bpl
Доброго времечка суток.
Решился вот разносить проекты по packag'ам - да вот незадача вышла - никак не приложу как объявленный в одном из модулей класс создать экземпляром в приложении, притом, что bplка грузится через LoadPackage Вот простейший пример модуль в проекте с bpl: unit MyModule; ... type TMyClass = class public constructor Create(SomeParam: string); destructor Destroy; override; end; ... далее собственно описываются сами конструктор и деструктор ... end;//MyModule собраем bplку - к примеру, MyBPL.bpl далее приложение уже другое ... implementation var PluginModule: HMODULE; procedure TForm1.FormCreate(Sender: TObject); var MyForm: TClass; begin PluginModule := LoadPackage('MyBPL.bpl'); // вот тут мне нужна такая конструкция для приведения типа MyForm := FindClass('TMyClass'); // а вот это не работает (MyForm as TMyClass).Create('sometext'); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnloadPackage(PluginModule); end; end; // ... вот собственно и проблема. Хочу оперировать объектом MyForm как TMyClass - подскажите пожалуйста, как это сдлеать. И второй вопрос - лучше сразу выгружать bpl после создания объекта или так и тащить ее до конца? |
#2
|
|||
|
|||
Re
Нашел вот такой способ:
1. Объявляю абстрактный класс TMyClassBasic(TPersistent) в некоем модуле Definitions 2. При сборке bpl - использую Definitions и наследую TMyClass от TMyClassBasic 3. В месте, где надо использовать bpl, использую Definitions и делаю приведение типа функции GetClass к TMyClassBasic 4. Полученный объект можно уже использовать как TMyClassBasic, главное в нем описывать всё что нужно |