Конференция "Компоненты" » bpl и initialization
 
  • d_oleg © (05.06.07 13:32) [0]
    Вынес компонент TDBGridEh в отдельный подгружаемый пакет (изд), в результате (в пакете) у него не выполняется код секции initialization. Как быть с initialization внутри bpl?
  • Reindeer Moss Eater © (05.06.07 13:41) [1]
    Странная логика.
    Вынес TDBGridEh и именно из за этого у пакета перестала выполняться initialization.
  • d_oleg © (05.06.07 13:44) [2]
    Не у пакета, у TDBGridEh
  • Reindeer Moss Eater © (05.06.07 13:44) [3]
    PS у тебя не initialization не выполняется. У тебя скорее всего сама bpl не грузится.
  • d_oleg © (05.06.07 13:45) [4]
    Когда компонент внутри exe, его секция initialization выполняется, если компонент в пакете - нет
  • Reindeer Moss Eater © (05.06.07 13:45) [5]
    Не у пакета, у TDBGridEh

    Откуда у класса взялись какие-то initialization?
    Ничего не путаешь?
  • d_oleg © (05.06.07 13:46) [6]
    bpl грузится
  • Reindeer Moss Eater © (05.06.07 13:47) [7]
    Когда компонент внутри exe, его секция initialization выполняется, если компонент в пакете - нет

    Внимательно изучи назначение секций requires и contains пакета.
  • Reindeer Moss Eater © (05.06.07 13:47) [8]
    bpl грузится

    Спорим, что нет?
  • d_oleg © (05.06.07 13:47) [9]

    > Откуда у класса взялись какие-то initialization?

    initialization, конечно, не у класса, а в модуле, в котором этот класс описывается. Когда этот модуль находится в пакете, эта секция не выполняется.
  • d_oleg © (05.06.07 13:48) [10]

    > Спорим, что нет?

    чего мне спорить, во-первых я его руками загружаю, во вторых в 100kb-экзешнике никак не может находится VCL да ещё и с доп. компонентами.
  • Reindeer Moss Eater © (05.06.07 13:54) [11]
    Что-то я не пойму замысел архитектора.
    Собрать приложение с рантайм пакетом ЕхЛиба, а потом вручную загружать его бпл.
  • d_oleg © (05.06.07 13:57) [12]
    Приложение само по себе ни о каком ЕхЛибе не знает, компилируется без этого пакета. Когда в нем в run-time создается форма из текстового описания, в которой используется соотв. грид, тогда пакет и подгружается. Ну да не в этом вопрос, вопрос "как заставить выполняться initialization внутри пакета".
  • Reindeer Moss Eater © (05.06.07 14:01) [13]
    initialization модуля, если на него есть ссылки, не может не выполниться.

    Один раз за все время существования процесса.
  • d_oleg © (05.06.07 14:22) [14]
    если на него ссылки есть где? В exe или в пакете?
  • Reindeer Moss Eater © (05.06.07 14:26) [15]
    Exe ничего же не знает по библиотеку.

    Внутри bpl вообще есть где-нибудь RegisterClass на грид?
  • d_oleg © (05.06.07 15:05) [16]

    > Внутри bpl вообще есть где-нибудь RegisterClass на грид?
    нет
  • d_oleg © (05.06.07 15:07) [17]
    RegisterClass делается в exe после загрузки пакета перед созданием компонента
  • Reindeer Moss Eater © (05.06.07 15:22) [18]
    Интересно, как это делается в exe, если он ничего ни о ехлибе ни о его гриде не знает?
  • d_oleg © (05.06.07 17:53) [19]
    после того, как exe подгрузил пакет, уже знает. Сканирует классы в пакете и регистрирует нужный.
 
Конференция "Компоненты" » bpl и initialization
Есть новые Нет новых   [134427   +34][b:0][p:0.001]