![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ilyalyu |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Вопрос такой. При разработке двух приложений используется один и тот же пакет компонентов. При работе над первым проектом потребовалось подправить исходники некоторых компонентов. Естественно, хочется, чтобы изменения, сделанные при работе над первым проектом, никак не влияли на второй проект. То есть хочется установить две копии одного и того же пакета: для первого проекта - исправленный вариант, для второго проекта - исходный вариант. Вопрос - как это сделать? Пока что при переключении с одного проекта на другой приходится удалять один вариант пакета и устанавливать вместо него другой. И так каждый раз.
|
|||
|
||||
Proxin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
самый простой вариант - написать наследников для каждого проекта.
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Можно использовать директивы условной компиляции, правда придется для каждого проекта делать вместо Compile - Build (что далеко не всегда удобно при каждой необходимости пересобрать экзешник + нужно, чтобы в SearchPath был прописан путь к "изменяемым" исходникам)
Например: в правленном модуле {$IFDEF myChanges} // правленный код {$ELSE} // исходный код {$ENDIF} Для проекта, в котором нужен правленный код, в меню Project>Options>Directories, Conditionals>Conditional defines прописать myChanges. P.S. А автор изменяемых исходников не против этого? ![]() Это сообщение отредактировал(а) kami - 20.9.2010, 07:10 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Положить копию компонентов в папку с проектом и править эту копию.
Тогда исправленный вариант будет действовать только на этот проект. При компиляции будет использована эта копия, т.к. приоритет в поиске файлов у локальной папки выше, чем у библиотечной. |
|||
|
||||
ilyalyu |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Это, конечно, самый последовательный метод, но отнюдь не самый простой. Изменить пару строчек в готовом компоненте гораздо быстрее.
Этот вариант частично решает проблему. Но если в исправленом компоненте добавлены published properties, то его нужно установить. Тогда предложеный способ не поможет. Пока придумал такой вариант: создавать для каждого проекта свою учетную запись Windows либо работать из под виртуальной машины. Тогда можно будет и индивидуальный Library path прописать и нужную версию компонент установить. Конечно, способ кривоват. |
||||
|
|||||
SeregaAltmer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 15.9.2010 Репутация: нет Всего: нет |
Не сказал бы что этот вариант лучше наследников. Наследника достаточно написать один раз, и больше не мучатся. Да и не так уж это проблематично, тем-более если там всего пара строк поменятся должна. |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Я за
Build вместо Compile не так уж и страшен. А вот написание на каждый чих наследников или более того плодить учетные записи - это уже перебор. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
+1 Они как раз для подобных вещей и предназначены! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |