![]() |
|
|
![]()
|
|
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Ситуация такая есть две dll каждая из которых имеет по форме, обе формы наследницы одного и тогоже класса (условно TОкноПрородитель), так вот после подключения к хост приложению каждая дллька регистрирует класс своей формы путем вызова RegisterClass.
Этот код находиться в хост приложении, а длл передается адрес на эту функцию. Так, вот с регистрацией первой формы проблем не возникло, а вот регистрация второй, приводит к ошибке A class named TОкноПрородитель already exists. Я в панике! Чего с этим можно сделать? P.S Дллели подключаются в рантайме. |
|||
|
||||
| vaddsm |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
НАШЕЛ подсказ на свою проблему:
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=25650 В моем случае Класс с одним и тем же именем это:
Его то и наследуют две злаполучные формы. Объясните мне пожалуйста как мне его в BPL завернуть и как этот самый BPL куда подключить чтобы решить описанную проблему. |
||||||
|
|||||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
vaddsm, Зачем тебе регистрировать класс? Он итак регистрируется автоматом, когда создается форма. Либо пиши сам имя класса. И Используй свойство Name
Это сообщение отредактировал(а) HappyLife - 20.7.2007, 16:12 |
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Класс регистрируется, чтобы хост приложение могло сконструировать форму е имея представления из чего она сделана, только зная ее имя. Это реально если предварительно провести регистрацию класса как было сказано выше. а затем вызвать данный код:
В моем случае два плагина регистрируют разные формы но обе наследующие класс TОкноПрородитель. И когда регистрируется вторая форма, вылетает эксепшин что мол TОкноПрородитель уже зарегистрирован. Это происходит така как RegisterClass регистрирует все дерево классов. Со всеми его предками. ОДНАКО! если убрать из наследования формой TОкноПрородитель и вместо него сделать тривиальную форму наследницу TForm все пройдет на ура! Почему черт возьми так происходит! Кто мне может объяснить. Вот тут http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=25650 написано черным по белому что проблему можно решить используя BPL, но как я не могу понять! |
|||
|
||||
| vaddsm |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
УРА!!!
Проблема решена! Собственно как и было сказано в упомянутой статье так и надо было сделаь. Всем столкнувшимся с подобной проблемой посвещаятся: Создайте компонент с проблемным классом. Затем подключите bpl к хост-приложению и ко всем плагинам (dll) статически. В области видимости тех мест где ваш компонент используется подключите инклудом хедр с описанием его класса. Откомпилируйте заново плагины и хост приложение. Воля! |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |