Здравствуйте, Slicer [Mirkwood], Вы писали:
SM>Народ, а кто знает, как в пэкеджах обеспечивается совместимость классов в BPL и основном модуле? Только наличием юнитов для сверки?
не только... там много чего еще есть...например, есть такой файл .dcp, прилагается к любому .bpl, и без него ты использовать Package не могешь...
вернее — могешь, но не компилятором, а вот подцепить его — таки да... могешь... надо только сделать ручной вызов всех Register... как это делать — отдельная песня, если хочешь — как-нить позже расскажу, могеш напомнить через пару дней (мой мыл есть в профиле).
в .dcp лежат все .dcu...
а в .dcu есть вся RTTI/DebugInfo/TI
... << RSDN@Home 1.1 beta 2 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Разве ручной вызов Register'ов спасет от несовместимости типов? Тогда — каким образом обеспечивается это спасение на уровне внутрнних механизмов Дельфей? Не модификацией же кода?
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, Hacker_Delphi, Вы писали:
H_D>Здравствуйте, star0ff, Вы писали:
S>>Возникло желание выгрузить из основной программы мои классы и засунуть их в какую-то библиотеку (DLL) S>>Подскажите возможные пути решения. H_D>Единственный правильный путь — использовать пакаджи (кстати, изначально они именно для этого и предназначены)... благо для этого и делать особо ничего не надо — просто галку "Use Runtime Packages" включить... причем, если убрать оттуда стандартные — то они тебе прилинкуются, но лучше так не шутить....
Интересно поподробнее про эти "шутки"...
Я припоминаю вот что: если в свой пакадж засунуть юниты VCl, все которые нужны, и подключить к проекту только его, то все работает, пока не пытаешься, например, динамически подключить пакадж, который требует другие юниты VCL.
Здравствуйте, Slicer [Mirkwood], Вы писали:
SM>Разве ручной вызов Register'ов спасет от несовместимости типов? Тогда — каким образом обеспечивается это спасение на уровне внутрнних механизмов Дельфей? Не модификацией же кода?
нет... ты не понял... если у тебя есть файл dcp — оно еще при компиляции ругнется — и все...
ручной вызов register нужен тогда, когда есть только bpl и ты точно знаешь, что "вон там" — точно Control.. далее подымаешь пакадж и регистрируешь его (при регистрации все вызова RegisterXXX можно перехватить и узнать про все классы, которые есть)...
а от ошибки несовместимости юнитов не имея ВСЕХ исходников ты не избавишься никак
... << RSDN@Home 1.1 beta 2 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Кстати, строго говоря, в некоторых случаях можно. Например, если надо Font.Assign(MyPlugin.GetFont()), то можно переписать RTTI-данные того фонта, который из плагина Если, конечно, там именно TFont, а не его потомок
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
The stars so gaily glistened... (Tue, 21 Oct 2003 08:25:24 GMT @392)
...while the fading voice of AlexVinS whispered through the darkness:
A> Я припоминаю вот что: если в свой пакадж засунуть юниты VCl, все которые A> нужны, и подключить к проекту только его, то все работает, пока не
Ну это нужно если по инету хочешь распространять.
А "на компакте" можно и стандартнуые борландовские выложить.
Здравствуйте, Arioch, Вы писали:
A>The stars so gaily glistened... (Tue, 21 Oct 2003 08:25:24 GMT @392) A>...while the fading voice of AlexVinS whispered through the darkness:
A>> Я припоминаю вот что: если в свой пакадж засунуть юниты VCl, все которые A>> нужны, и подключить к проекту только его, то все работает, пока не
A>Ну это нужно если по инету хочешь распространять. A>А "на компакте" можно и стандартнуые борландовские выложить.
Просто не люблю таскать библиотеки которые не необходимы.