Главная страница
    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.47 MB
Время: 0.012 c
1-1124298130
Kyro
2005-08-17 21:02
2005.09.11
Удаление файла


14-1124301761
lookin
2005-08-17 22:02
2005.09.11
Ошибки страницы...


9-1116130550
NightSnyper
2005-05-15 08:15
2005.09.11
PowerDraw


14-1124348891
vidiv
2005-08-18 11:08
2005.09.11
Самая популярная в мире игра!


3-1122991719
vol
2005-08-02 18:08
2005.09.11
можно абдейт нескольких в одну строку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский