| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Директивы условной компиляции |
| Автор: Matrex 6.4.2012, 11:56 |
| Коллеги! Доброго времени суток! Вопрос по директивами условной компиляции. Как в Delphi проверить наличие либо отсутствие определенного юнита на машине пользователя и в момент компиляции проекта отключать некоторые участки кода (отключить - $IFDEF – это я знаю, а как быть с юнитом?). |
| Автор: northener 6.4.2012, 14:25 |
| На машине пользователя от директив компиляции уже никакой пользы нет. Все участки кода уже скомпилированы. Да и никаких юнитов на машине пользователя тоже нет. Уточните ваш вопрос. |
| Автор: Matrex 6.4.2012, 15:07 | ||
| Пересекающиеся проекты. Товарищ хочет использовать мою библиотеку, но не хочет ставить себе сторонние компоненты (в данном конкретном случае это VirtualTrees). Можно ли переменную UseTVirtualTree определить автоматически по наличию/отсутствии у него на машине модуля (файла) VirtualTrees.pas.
|
| Автор: Matrex 6.4.2012, 15:31 |
| Этот модуль живет в Subversion. Поэтому если мы будем постоянно менять значение переменной будет не хорошо – мы погрязнем в ревизиях. Теоретически мы видели три решения: 1. Это как я пытался объяснить сразу. 2. Сделать inc-файл. В нем прописать определение этой переменной. На этапе компиляции подключать его к моему модулю типа {$i usetree.inc} (типа у меня этот файл есть, у товарища этого файла нет). Но компилятор у него пишет "файл отсутствует". Может можно как то отключить эту проверку? 3. Сделать эту переменную (UseTVirtualTree) глобальной. Минус – для всех проектов мне придется прописывать эту переменную в свойствах проекта – Этот вариант работает. |
| Автор: Snowy 6.4.2012, 16:13 |
| Если компонент не используется в дизайнтайм, а только в рантайм, то нет никакой необходимости его устанавливать. Пусть юзает наздоровье. Вариант 2: Использовать компонент только тогда, когда установлена соответствующая переменная. Для этого не обязательно прописывать её в коде. Можно прописать её в строке компилятора, или в свойствах проекта. Если юзается студия, то, кроме вариантов Release и Debug, можно добавить свой кастомный вариант, где указать эту директиву. |
| Автор: Matrex 6.4.2012, 16:23 | ||
Похоже, что так и придется сделать… Это действительно работает... Другого варианта я пока не вижу… |