Конференция "Компоненты" » Поместить TAutoObject в пакет
 
  • d_oleg © (13.06.07 16:22) [0]
    Возможно ли subj? Ибо для него нужно создавать фабрику классов, которой нужет глобальный объект ComServer, описанный в ConServ.pas с директивой {$DENYPACKAGEUNIT}
  • Сергей М. © (14.06.07 12:30) [1]

    > d_oleg ©   (13.06.07 16:22)


    Видишь ли, объект ComServer создается в ходе инициализации юнита CmnServ.

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

    Поскольку Windows ничего не знает ни про какие пакеты (для нее что bpl, что dll - безразлично, и та и другая есть просто библиотеки динамической компоновки), процедура Initialize в ходе загрузки модуля вызвана не будет, соответственно фабрика класса создана не будет, а без фабрики, разумеется, не может быть создан ни один объект класса.
  • d_oleg © (14.06.07 14:28) [2]
    Сергей М, это все понятно, что "в лоб нельзя".
  • Сергей М. © (15.06.07 08:29) [3]
    Ну а раз понятно, то почему не отказаться от затеи с пакетом в пользу обычной dll ?
  • d_oleg © (15.06.07 16:44) [4]
    Сергей М., а Вы все задачи только "в лоб" решаете?


    > почему не отказаться от затеи с пакетом в пользу обычной
    > dll
    каким образом из dll можно импортировать тип?
 
Конференция "Компоненты" » Поместить TAutoObject в пакет
Есть новые Нет новых   [119280   +14][b:0][p:0]