Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка пакета bpl ч/з LoadLibrary, Подводные камни? 
V
    Опции темы
Avers
Дата 12.1.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.6.2008
Где: 26rus

Репутация: нет
Всего: нет



http://gunsmoker.blogspot.com/ - информация на эту тему, спс CodeMonkey))
Попробовал так сделать, решил проблему. 
Нужно было компонент, используемый и в приложении и в плагине влинковывать и туда и туда (странное желание, но.... ), чтобы не создавать еще одного пакета, требуемого приложению и плагину для работы.

Но! Одно но!
Компопнент DevExpress (а именно TcxButton) не желает принимать вид в стиле XP, т.е. несмотря на 
Код

  ...
  Btn.LookAndFeel.NativeStyle := True;
  ...

остается в стиле, который принимает по умолчанию (W98).

Подскажите, возможно ли, и как решить таку проблемку.

--------------------
Born to be wild
PM MAIL   Вверх
CodeMonkey
Дата 12.1.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Может манифест XP-ёвый надо подключить?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Avers
Дата 12.1.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.6.2008
Где: 26rus

Репутация: нет
Всего: нет



Мне видится проблема в том, что не выполняются (как я понял) части Initialization  и Finalization Unit'ов, находящихся в пакете (а у DevExpress эти части не пусты).

И еще вопрос:
Как правильно выгрузить пакеты (загруженные ч/з LoadLibrary)?? 
Например у меня возникает проблема, если пользователь отказывается логонится и закрывает форму аутентификации (она - есть один из пакетов) - винда пишет, что в приложении и ошибка и предлагает отправить куда-то об этом отчет smile (Интересно куда??). Если же пользователь успешно логонится и открывает программу, то при закрытии ни каких проблем и ошибок не возникает........ Меняю LoadLibrary на LoadPackage - все нормально... ошибок нет ни при нормальном закрытии, ни при отказе пользователя логонится...
%) - чувствую себя средневековым человеком, которому предложили управлать космическим кораблем.

Добавлено через 1 минуту и 52 секунды
но манифест обязательно попробую
И компонентик девэкспресовский (спец для этого дела) тоже надо заюзать.

Кста, если сменить LoadLibrary на LoadPackage - это решает проблему с отображением кнопок
--------------------
Born to be wild
PM MAIL   Вверх
CodeMonkey
Дата 12.1.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Я не понял, а вы вызываете функцию Initialize пакета или нет?

Цитата(Avers @  12.1.2009,  19:31 Найти цитируемый пост)
Как правильно выгрузить пакеты (загруженные ч/з LoadLibrary)?? 

Очевидно: FreeLibrary.

Цитата(Avers @  12.1.2009,  19:31 Найти цитируемый пост)
винда пишет, что в приложении и ошибка

Значит в приложении действительно ошибка. И её нужно искать.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Avers
Дата 13.1.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.6.2008
Где: 26rus

Репутация: нет
Всего: нет



Цитата(CodeMonkey @  12.1.2009,  20:33 Найти цитируемый пост)
Очевидно: FreeLibrary.

Вопрос в том, обязательно ли выгружать ее вручную. Ну, к примеру с пакетами (т.е. при использовании LoadPackage), это делать не обязательно (Рассметоренно в этой теме)... Напрашивается ответ, что случай с LoadLibrary аналогичен, и можно вручную не выгружать. Но лучше узнать, чем предполагать))

Цитата(CodeMonkey @  12.1.2009,  20:33 Найти цитируемый пост)
Я не понял, а вы вызываете функцию Initialize пакета или нет?

Пробовал и так и эдак, т.е. в данном случае вызов функции Initialize можно опустить - пакет функционирует нормально - проблема лишь с внешним видом кнопок.
Если вызвать, то возникает ошибка. Как я понял, это один из модулей компонента (cxButton), который продублирован в приложении и в загружаемом пакете, пытается снова зарегестрировать класс cxRec (без понятия че за класс и зачем он нужен - полазил по unit'ам - не нашел). О чем совственно и сообщает ошибка.... 

Это сообщение отредактировал(а) Avers - 13.1.2009, 09:40
--------------------
Born to be wild
PM MAIL   Вверх
Avers
Дата 13.1.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.6.2008
Где: 26rus

Репутация: нет
Всего: нет



Словом, проблему с ошибкой при досрочном закрытии формы аутентификации временно решил - просто заменил LoadLibrary на LoadPackage, ибо нет времени устранить истинную причину.
Проблема на самом деле в интерфейсе, который я передавал от приложения пакету (форме аутентификации). Передавал в качестве свойства интерфейса самой формы..... теперь понимаю, что это только лишний гемор (прошу прощения) при выгрузке пакета.... 
--------------------
Born to be wild
PM MAIL   Вверх
CodeMonkey
Дата 13.1.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



>>> Напрашивается ответ, что случай с LoadLibrary аналогичен, и можно вручную не выгружать
Ну если идёт выход из программы - то, разумеется, можно и не выгружать вручную.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Avers
Дата 20.1.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.6.2008
Где: 26rus

Репутация: нет
Всего: нет



XPManifest увы, не желает работать вне приложения... :(
В моем случае - он не желает придать божеский вид кнопками на форме из пакета. Причем не зависимо от того, как этот самый пакет подгружать - хоть через LoadLibrary (с выполнением процедуры Initialize), хоть через LoadLibrary.

Добавлено через 2 минуты и 59 секунд
Сорри... поспешил....
Прост по незнанию и неумению (до этого манифест не использовал ни разу) я его и забросил на форму, в пакет. 
Положив его на главную форму приложения - проблема решилась. 
--------------------
Born to be wild
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.