Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как загрузить *.bpl и получить с него классы через GetClass [D7, Win2k, WinXP]


Страницы:   1 2

incms ©   (2006-10-24 14:05:00) 

Загружаю пакет через LoadPackage  и делаю GetClass. Но GetClass возвращае nil.
Для каждого класса из пакета делаю RegisterClass в секции initialization.

Если в свойствах проекта ставлю галочку Build with runtime packages, то все работает. Но тогда мой проект компилится без пакетов, что мне не нужно.


GrayFace   (2006-10-29 15:51:00) [1]

Сергей М. ©   (27.10.06 10:36) [25]
Не понятна реакция.


Сергей М.   (2006-10-27 10:36:00) [2]


> GrayFace ©   (27.10.06 10:21) [24]


?!


GrayFace   (2006-10-27 10:21:00) [3]

incms   (25.10.06 17:58) [20]
...иногда так тяжело понять своего начальника...
ну не я так решил, но мне этого не изменить :(

Может попробовать запускать dll с обычным кодом "... Application.Run" в отдельном потоке?


atruhin   (2006-10-25 21:53:00) [4]

> либо статически их компоновать с каждым плагином.

Естественно. Я пояснения автора видать не внимательно прочитал, думал ему это и нужно.


DrPass   (2006-10-25 20:28:00) [5]


> Почему же? ActiveX формы, какие проблеммы?

Проблемы - те же самые: таскать вместе с плагинами все *.bpl, либо статически их компоновать с каждым плагином.


atruhin   (2006-10-25 19:12:00) [6]

> Если требование - один EXE (господи, зачем???! И что мешает
> это требование убрать?), тогда один выход - использовать
> WinAPI-окна в DLL, а не формы

Почему же? ActiveX формы, какие проблеммы?


incms   (2006-10-25 17:58:00) [7]


> DrPass



> Если требование - один EXE (господи, зачем???! И что мешает
> это требование убрать?)


...иногда так тяжело понять своего начальника...
ну не я так решил, но мне этого не изменить :(


incms   (2006-10-25 17:58:00) [8]


> DrPass



> Если требование - один EXE (господи, зачем???! И что мешает
> это требование убрать?)


...иногда так тяжело понять своего начальника...
ну не я так решил, но мне этого не изменить :(


DrPass   (2006-10-25 15:34:00) [9]


> incms   (25.10.06 13:19) [16]

Если требование - один EXE (господи, зачем???! И что мешает это требование убрать?), тогда один выход - использовать WinAPI-окна в DLL, а не формы


Сергей М.   (2006-10-25 13:23:00) [10]


> нельзя скомпилить


Чтой-то вдруг "нельзя" ?

То что ты получил отлуп во время компиляции, это вовсе не означает что "нельзя".

Следует просто разобраться в претензиях компилятора и устранить причины, по которым он изволит "капризничать". А причины - в ошибках в тексте твоего(!!) кода. Который есть тайна за семью печатями)..


incms   (2006-10-25 13:19:00) [11]


> Сергей М.

,
> Amoeba


Все то хороше, я как раз через COM и работаю. Но вот то, что нельзя скомпилить проект со статическими библиотеками - это и есть проблема.


Amoeba   (2006-10-25 12:19:00) [12]

И еще статьи:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=468
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=274


Сергей М.   (2006-10-25 11:23:00) [13]

http://delphiworld.narod.ru/base/little_about_plugins.html


incms   (2006-10-25 11:07:00) [14]


> DrPass


Проблема в том, что должен быть ОДИН EXE файл без всяких довесков, и это естественно должно работать. (Не я это придумал, но к сожалению именно так надо) Ну а наличие/отсутствие плагина проверяется в программе, поэтому без него она может работать.

Кстати если загружать BPL с отключенным флажком, то как я понял, она работает как обычная DLL, только к ней теперь надо весь набор используемых пакетов?


GrayFace   (2006-10-24 17:56:00) [15]

А может без библиотеки?


DrPass   (2006-10-24 17:50:00) [16]


> incms   (24.10.06 17:38) [8]

Так пусть себе меняются. Главное, чтобы с приложением был стандартный набор bpl-ок RTL и VCL, а свои плагины добавляй/удаляй/меня в любом количестве и конфигурации.

> Но если установить флаг, то библиотеки подгружаются динамически
> и в одну RTL. Не понятно что мешает это делать вручную

Правильно, в этом случае само приложение будет использовать RTL из rtl*.bpl - той же библиотеки, что и пакеты. А если флаг снять, модули RTL просто скомпонуются с приложением, и получится две копии - одна скомпонованная, вторая в rtl*.bpl.

>  Хотя наверное прийдется с dll извращаться :(

Не надо. Результат будет тот же, плюс еще масса граблей, плюс та же RTL, но уже в количестве N экземпляров, где N - число DLL + EXE :)
Если хочешь иметь формы в плагинах, то самый разумный вариант (и, пожалуй, единственно пригодный к использованию) - ставить этот флажок и распространять библиотеки RTL/VCL вместе с приложением.


Игорь Шевченко   (2006-10-24 17:42:00) [17]

DrPass ©   (24.10.06 16:25) [6]

Тьфу! :) Извини, не увидел, что он пытается загрузить пакет из не-bplного EXEшника.


Ketmar   (2006-10-24 17:41:00) [18]

>[8] incms 24-Oct-2006, 17:38
если
>Не понятно что мешает это делать вручную...

то
>наверное прийдется с dll извращаться :(
лучше не надо.


incms   (2006-10-24 17:38:00) [19]

DrPass

В том то и дело, что запихать нельзя - файл библиотеки будет меняться и зависить это будет от конфигурации системы пользователя.


> Пакет ведь просто импортирует функции у известных ему библиотек.
>  В проге есть такие же функции, статически с ней скомпонованные,
>  но скомпилированному отдельно от нее пакету они, само собой,
>  недоступны.


Но если установить флаг, то библиотеки подгружаются динамически и в одну RTL. Не понятно что мешает это делать вручную...

Собственно в библиотеке содержатся формы, вот и не хотел делать в dll, дабы иметь полный доступ к объектам. Хотя наверное прийдется с dll извращаться :(


incms   (2006-10-24 17:38:00) [20]

DrPass

В том то и дело, что запихать нельзя - файл библиотеки будет меняться и зависить это будет от конфигурации системы пользователя.


> Пакет ведь просто импортирует функции у известных ему библиотек.
>  В проге есть такие же функции, статически с ней скомпонованные,
>  но скомпилированному отдельно от нее пакету они, само собой,
>  недоступны.


Но если установить флаг, то библиотеки подгружаются динамически и в одну RTL. Не понятно что мешает это делать вручную...

Собственно в библиотеке содержатся формы, вот и не хотел делать в dll, дабы иметь полный доступ к объектам. Хотя наверное прийдется с dll извращаться :(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо