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

Вниз

Вопрос про 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1245002203
Mimi
2009-06-14 21:56
2009.08.09
Создание "Справки" и "О программе"


1-1211807607
Jungle
2008-05-26 17:13
2009.08.09
"Правильно" преобразовать тип Variant


11-1204664342
=BuckLr=
2008-03-04 23:59
2009.08.09
Вопрос по KOLMediaPlayer


15-1244547469
ТИМА
2009-06-09 15:37
2009.08.09
Неполные уравнения


15-1244542530
Машинка
2009-06-09 14:15
2009.08.09
Блок питания 16-10v