Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
8-1196371243
leonidus
2007-11-30 00:20
2009.08.09
Как отобразить одну картинку на другой?


15-1244752206
Юрий
2009-06-12 00:30
2009.08.09
С днем рождения ! 12 июня 2009 пятница


15-1244456198
blackman
2009-06-08 14:16
2009.08.09
6 стадий проекта


15-1244233802
Юрий
2009-06-06 00:30
2009.08.09
С днем рождения ! 6 июня 2009 суббота


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский