Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Проблемы с загрузкой пакетов функцией LoadPackage   Найти похожие ветки 

 
Суслик ©   (2005-08-16 15:37) [0]

Ситуация:

Есть реализация plugins посредством runtime пакетов. При загрузке плугина функцией LoadPackage в плугине в одном модуле секций initialization выполняется, в другом нет.

Вопрос:

Если ли какие тонкости в использовании секции initialization в пакетах, которые загружаются функцией LoadPackage?


 
Суслик ©   (2005-08-16 15:59) [1]

Виноват! Я обрасовал совершенно неверно ситуацию! :((

На самом деле так. Есть:
1. Приложение (назовем Project). В списке runtime пакетов имеет PluginPrototype. Грузит Plugin во время выполнения.
2. Пакет-прототип плугина (назовем PluginPrototype). Описывает предка для плугина.
3. Плугин (назовем Plugin). Реализует абстрактные классы из PluginPrototype.
4. Пакет, содержащий некоторые классы, которые использует Plugin (назовем Toolkit). С этим пакетом собственно и есть проблемы.

Plugin содержит в секции Requires пакеты PluginPrototype и Toolkit.
При этом в пакете Plugin ЯВНО (т.е. в секции uses) используется только один модуль из Toolkit (назовем его Unit1).
Другой модуль пакета Toolkit (назовем его Unit2) не используется (т.е. присутствует в секции uses) вообще нигде - ни в plugin, ни в unit1.
Оба модуля - unit1 и unit2 содержат секции initialization. Оная секция в модуле unit1 выполняется, в модуле unit2 - нет.

Вопрос - как с этим бороться? Нужно чтобы выполняласть секция из unit1 и unit2

ЗЫ. Один вариант - явно в plugin использовать unit2 - я знаю. Есть еще какие варианты?


 
DiamondShark ©   (2005-08-16 16:05) [2]

Не надо бороться с правильным поведением.


 
Суслик ©   (2005-08-16 16:09) [3]


> Не надо бороться с правильным поведением.


я уже понял (пока курил), что это поведение верное :)

всем спасибо за внимание :)


 
DiamondShark ©   (2005-08-16 16:13) [4]

Ну, блин.
Так не интересно...


 
Суслик ©   (2005-08-16 16:16) [5]


>  [4] DiamondShark ©   (16.08.05 16:13)


> Так не интересно...

терпи или... ну сам знаешь что можно сделать :)


 
Суслик ©   (2005-08-16 17:23) [6]


> [4] DiamondShark ©   (16.08.05 16:13)

То, что поведение, описанное мною, является нормальным, я согласен.

ВОПРОС 1: Можно ли каким либо ДОКУМЕНТИРОВАННЫМ способом сделать так, чтобы секция initialization была выполнена для у каждого модуля, входящего в пакет?

ВОПРОС 2: Где в ПАКЕТЕ можно расположить код, который будет гарантированно выполнен в случае, если пакет включается в секцию requires другого пакета  и этот другой пакет загружается функцией LoadPackage?


 
Игорь Шевченко ©   (2005-08-16 17:38) [7]

Unit

Sysutils

Category

package support routines

procedure InitializePackage(Module: HMODULE);

Description

InitializePackage checks for duplicate units in a package and calls the initialization blocks of the contained units.

Note: InitializePackage is called internally by the LoadPackage function.


 
Суслик ©   (2005-08-16 17:49) [8]

Спасибо.

Я видел эту функцию. Да... что-то пропустил ее. Сейчас попробую.

Тогда вопрос:
1. как узнать в пакете все пакеты, которые перечислены в секции requires.
2. как узнать в проекте все пакеты, которые перечислены в списке runtime packages в настройках проекта.

?


 
DiamondShark ©   (2005-08-16 18:05) [9]


> ВОПРОС 2: Где в ПАКЕТЕ можно расположить код, который будет
> гарантированно выполнен в случае, если пакет включается
> в секцию requires другого пакета  и этот другой пакет загружается
> функцией LoadPackage?

Все секции initialization выполняются при загрузке пакета функцией LoadPackage.


> 1. как узнать в пакете все пакеты, которые перечислены в
> секции requires.

GetPackageInfo


> 2. как узнать в проекте все пакеты, которые перечислены
> в списке runtime packages в настройках проекта.

EnumModules


 
Суслик ©   (2005-08-16 18:11) [10]


> EnumModules


+f1

Какая полезная штука раздел хелпа "package support routines". :)

Спасибо. Метериала для чтения более чем достаточно.



Страницы: 1 вся ветка

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
14-1124103208
root
2005-08-15 14:53
2005.09.11
Проблемма с часам


2-1123502285
M@rlin
2005-08-08 15:58
2005.09.11
запрос к БД из Дельфи


3-1122867252
rentgen
2005-08-01 07:34
2005.09.11
Как переместить запись?


9-1113037739
Kolan
2005-04-09 13:08
2005.09.11
Распознавание образов.


14-1123920047
Копир
2005-08-13 12:00
2005.09.11
Один довод для усиления мусульманской диаспоры в развитых странах