Главная страница
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.011 c
2-1244723130
Mishechka
2009-06-11 16:25
2009.08.09
Как программно связать поле в отчёте FR с полем БД?


2-1245065034
b/@.
2009-06-15 15:23
2009.08.09
Какое практическое применение UniqueString ?


1-1211919215
@!!ex_
2008-05-28 00:13
2009.08.09
Home Folder текущего пользователя.


15-1244207036
DeadMeat
2009-06-05 17:03
2009.08.09
Каталогизатор фильмов


3-1225445959
dmitry_12_08_73
2008-10-31 12:39
2009.08.09
Сохранение курсоров в TDBGrid