![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Matrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 31.1.2006 Репутация: нет Всего: 2 |
Коллеги! Доброго времени суток!
Вопрос по директивами условной компиляции. Как в Delphi проверить наличие либо отсутствие определенного юнита на машине пользователя и в момент компиляции проекта отключать некоторые участки кода (отключить - $IFDEF – это я знаю, а как быть с юнитом?). |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
На машине пользователя от директив компиляции уже никакой пользы нет. Все участки кода уже скомпилированы. Да и никаких юнитов на машине пользователя тоже нет. Уточните ваш вопрос.
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Matrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 31.1.2006 Репутация: нет Всего: 2 |
Пересекающиеся проекты. Товарищ хочет использовать мою библиотеку, но не хочет ставить себе сторонние компоненты (в данном конкретном случае это VirtualTrees).
Можно ли переменную UseTVirtualTree определить автоматически по наличию/отсутствии у него на машине модуля (файла) VirtualTrees.pas.
|
|||
|
||||
| northener |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Нет. Но он может при компиляции ручками выключить соответствующую опцию
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
||||
|
|||||
| Matrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 31.1.2006 Репутация: нет Всего: 2 |
Этот модуль живет в Subversion. Поэтому если мы будем постоянно менять значение переменной будет не хорошо – мы погрязнем в ревизиях.
Теоретически мы видели три решения: 1. Это как я пытался объяснить сразу. 2. Сделать inc-файл. В нем прописать определение этой переменной. На этапе компиляции подключать его к моему модулю типа {$i usetree.inc} (типа у меня этот файл есть, у товарища этого файла нет). Но компилятор у него пишет "файл отсутствует". Может можно как то отключить эту проверку? 3. Сделать эту переменную (UseTVirtualTree) глобальной. Минус – для всех проектов мне придется прописывать эту переменную в свойствах проекта – Этот вариант работает. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Если компонент не используется в дизайнтайм, а только в рантайм, то нет никакой необходимости его устанавливать. Пусть юзает наздоровье.
Вариант 2: Использовать компонент только тогда, когда установлена соответствующая переменная. Для этого не обязательно прописывать её в коде. Можно прописать её в строке компилятора, или в свойствах проекта. Если юзается студия, то, кроме вариантов Release и Debug, можно добавить свой кастомный вариант, где указать эту директиву. |
|||
|
||||
| Matrex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 31.1.2006 Репутация: нет Всего: 2 |
Похоже, что так и придется сделать… Это действительно работает... Другого варианта я пока не вижу… |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |