Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
ВнизВопрос про bpl... Найти похожие ветки
← →
SPeller © (2009-06-09 05:39) [0]Мож баян, не пинайте
Допустим, есть приложение, есть бпл, которую оно использует. Если я поменяю в бпл класс, который из нее торчит, добавлю метод, или удалю не используемый метод, то работа основного приложения не нарушится?
← →
test © (2009-06-09 08:18) [1]SPeller © (09.06.09 05:39)
Нарушиться если ты поменяеш количество/порядок параметров, тоже для названий функций.
← →
SPeller © (2009-06-09 08:21) [2]Тут просто вспомнили как когда-то на 7-ке получали траблы из-за изменений бпл без перекомпиляции ехе. Задумались о модульности, решил узнать как с этим дело обстоит, может что поправили в последней дельфе, может просто руки были кривоваты...
← →
Тимохов_ (2009-06-09 10:48) [3]
> SPeller © (09.06.09 08:21) [2]
>
> Тут просто вспомнили как когда-то на 7-ке получали траблы
> из-за изменений бпл без перекомпиляции ехе. Задумались о
> модульности, решил узнать как с этим дело обстоит, может
> что поправили в последней дельфе, может просто руки были
> кривоваты...
Если ты задумался о модульности то вот тебе мои рекомендации.
Для организации модулей надо использовать такую структуру:
ПакетПрототипаМодуля
ХостПриложение (requires ПакетПрототипаМодуля)
Модуль (requires ПакетПрототипаМодуля)
Т.о. напрямую Хост не знает о Модуле - он знает о прототипе модуля, который содержит абстрактный класс модуля. Модуль при загрузке по LoadPackage, в секции Initialize одного из своих модулей проводит регистрацию себя, используя для этого спец. функции из Прототипа.
Если прототип не менялся, то ты можешь сколько угодно менять свой модуль: добавлять методы, классы и пр. Но Хост об этом ничего не узнает - Прототип то остался неизменным.
Другой вопрос, что требуется расширить Прототип (вообще не верно говорить Прототип - мне просто слово нравится, правильнее - Абстрактный интерфейс). Тогда лучше перекомпилировать все нафиг :) Спокойней будет.
← →
Тимохов_ (2009-06-09 10:49) [4]Хотя я больше о плугинах, нежели о модулях. Но может полезно будет.
← →
Игорь Шевченко © (2009-06-09 11:55) [5]
> Допустим, есть приложение, есть бпл, которую оно использует.
> Если я поменяю в бпл класс, который из нее торчит, добавлю
> метод, или удалю не используемый метод, то работа основного
> приложения не нарушится?
Если добавишь/уберешь метод не виртуальный - не нарушится. Если ты изменишь структуру класса (вставишь посередине поля), то нарушится.
Если изменишь набор параметров в методе - то нарушится.
← →
SPeller © (2009-06-09 12:17) [6]Заговорили про дотнет (который я ошенама не люблю), мол как в нем отлично реализовано использовнаие чужих классов, реализованных в другом бинарнике, и при этом при изменении подгружаемого модуля ничего не ломается если модуль какие-то изменения понес, о которых основная программа не знает.
← →
Игорь Шевченко © (2009-06-09 12:47) [7]SPeller © (09.06.09 12:17) [6]
Во-первых, еще как ломается, во-вторых, там организована версионность, то есть, может существовать совершенно равноправно несколько версий одного модуля и каждый будет использоваться только своими приложениями, в-третьих, такое использование надо настраивать через манифесты.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c