| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Загрузка пакета bpl ч/з LoadLibrary |
| Автор: Avers 12.1.2009, 11:59 | ||
| http://gunsmoker.blogspot.com/ - информация на эту тему, спс CodeMonkey)) Попробовал так сделать, решил проблему. Нужно было компонент, используемый и в приложении и в плагине влинковывать и туда и туда (странное желание, но.... ), чтобы не создавать еще одного пакета, требуемого приложению и плагину для работы. Но! Одно но! Компопнент DevExpress (а именно TcxButton) не желает принимать вид в стиле XP, т.е. несмотря на
остается в стиле, который принимает по умолчанию (W98). Подскажите, возможно ли, и как решить таку проблемку. |
| Автор: CodeMonkey 12.1.2009, 14:47 |
| Может манифест XP-ёвый надо подключить? |
| Автор: Avers 12.1.2009, 19:31 |
| Мне видится проблема в том, что не выполняются (как я понял) части Initialization и Finalization Unit'ов, находящихся в пакете (а у DevExpress эти части не пусты). И еще вопрос: Как правильно выгрузить пакеты (загруженные ч/з LoadLibrary)?? Например у меня возникает проблема, если пользователь отказывается логонится и закрывает форму аутентификации (она - есть один из пакетов) - винда пишет, что в приложении и ошибка и предлагает отправить куда-то об этом отчет %) - чувствую себя средневековым человеком, которому предложили управлать космическим кораблем. Добавлено через 1 минуту и 52 секунды но манифест обязательно попробую И компонентик девэкспресовский (спец для этого дела) тоже надо заюзать. Кста, если сменить LoadLibrary на LoadPackage - это решает проблему с отображением кнопок |
| Автор: CodeMonkey 12.1.2009, 20:33 |
| Я не понял, а вы вызываете http://gunsmoker.blogspot.com/2008/12/5.html пакета или нет? Очевидно: FreeLibrary. Значит в приложении действительно ошибка. И её нужно искать. |
| Автор: Avers 13.1.2009, 09:39 |
Вопрос в том, обязательно ли выгружать ее вручную. Ну, к примеру с пакетами (т.е. при использовании LoadPackage), это делать не обязательно (http://forum.vingrad.ru/forum/topic-240495.html)... Напрашивается ответ, что случай с LoadLibrary аналогичен, и можно вручную не выгружать. Но лучше узнать, чем предполагать)) Пробовал и так и эдак, т.е. в данном случае вызов функции Initialize можно опустить - пакет функционирует нормально - проблема лишь с внешним видом кнопок. Если вызвать, то возникает ошибка. Как я понял, это один из модулей компонента (cxButton), который продублирован в приложении и в загружаемом пакете, пытается снова зарегестрировать класс cxRec (без понятия че за класс и зачем он нужен - полазил по unit'ам - не нашел). О чем совственно и сообщает ошибка.... |
| Автор: Avers 13.1.2009, 10:26 |
| Словом, проблему с ошибкой при досрочном закрытии формы аутентификации временно решил - просто заменил LoadLibrary на LoadPackage, ибо нет времени устранить истинную причину. Проблема на самом деле в интерфейсе, который я передавал от приложения пакету (форме аутентификации). Передавал в качестве свойства интерфейса самой формы..... теперь понимаю, что это только лишний гемор (прошу прощения) при выгрузке пакета.... |
| Автор: CodeMonkey 13.1.2009, 11:23 |
| >>> Напрашивается ответ, что случай с LoadLibrary аналогичен, и можно вручную не выгружать Ну если идёт выход из программы - то, разумеется, можно и не выгружать вручную. |
| Автор: Avers 20.1.2009, 11:13 |
| XPManifest увы, не желает работать вне приложения... :( В моем случае - он не желает придать божеский вид кнопками на форме из пакета. Причем не зависимо от того, как этот самый пакет подгружать - хоть через LoadLibrary (с выполнением процедуры Initialize), хоть через LoadLibrary. Добавлено через 2 минуты и 59 секунд Сорри... поспешил.... Прост по незнанию и неумению (до этого манифест не использовал ни разу) я его и забросил на форму, в пакет. Положив его на главную форму приложения - проблема решилась. |