Форум: "Прочее";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
ВнизТрабла с директивой Найти похожие ветки
← →
О-Сознание (2013-03-12 17:40) [0]В отдельном юните есть директива, если её включить, то подсоединяются другие модули.
Во многих проектах эта директива не нужна, я её просто закомментирую:
// {$DEFINE USE_PNG}
А в некоторых она нужна и я её постоянно расскомментирую.
Объявление директивы в главном модуле ни к чему не приводит.
Как сделать удобное управление этой директивой из главного модуля? (Unit1.pas)
← →
Медвежонок Пятачок © (2013-03-12 17:44) [1]размножить где требуется
ифдеф особый случай
андеф пнг
ендиф
особый случай задефайнить в опциях проекта.
← →
О-Сознание (2013-03-17 23:59) [2]
> Медвежонок Пятачок © (12.03.13 17:44) [1]
Что-то я не понял, зачем делать $UNDEF?
Зачем делать изменение в опциях, есть другой вариант?
← →
Медвежонок Пятачок © (2013-03-18 00:06) [3]>Во многих проектах эта директива не нужна,....
← →
О-Сознание (2013-03-18 01:10) [4]Давайте по порядку.
Сделано так:
unit MyGraph;
{$DEFINE USE_PNG}
interface
implementation
uses
{$IFDEF USE_PNG}
MyPng,
{$ENDIF}
Classes;
И как сделать включение/отключение USE_PNG в Unit1?
← →
Sapersky (2013-03-18 01:20) [5]Заменить {$DEFINE USE_PNG} на {$I UsePng.inc}
Создать файл UsePng.inc в папке проекта, в нём прописать {$DEFINE USE_PNG} или не прописывать, по необходимости. У каждого проекта этот UsePng.inc может быть свой.
← →
Германн © (2013-03-18 01:34) [6]
> О-Сознание (12.03.13 17:40)
>
> В отдельном юните есть директива
А зачем эта директива находится в "отдельном юните"?
Знаю только одну настоятельную причину такого расположения директив условной компиляции.
← →
О-Сознание (2013-03-18 02:30) [7]
> Германн © (18.03.13 01:34) [6]
>
>
> > О-Сознание (12.03.13 17:40)
> >
> > В отдельном юните есть директива
>
> А зачем эта директива находится в "отдельном юните"?
А где её объявлять?
← →
Германн © (2013-03-18 02:38) [8]
> А где её объявлять?
>
Да много где. В опциях проекта, в файлах исходников (причём тут возможна масса вариантов). Ты приведи реальный пример, тогда можно будет перевести разговор/обсуждение на реальные решения.
← →
О-Сознание (2013-03-18 02:41) [9]Создаю новый проект.
Подключаю MyGraph.
Объявляю директиву.
Компилирую, PNG при загрузке выдает ошибку.
← →
Sapersky (2013-03-18 02:51) [10]
> В опциях проекта
Вроде бы это работает только если файл (для которого директива) добавлен в проект, а не просто указан в uses. Ну можно и добавлять, конечно.
← →
О-Сознание (2013-03-19 20:01) [11]
> Sapersky (18.03.13 01:20) [5]
>
> Заменить {$DEFINE USE_PNG} на {$I UsePng.inc}
Работает.
Но проекты где Png не нужно начинают просить UsePng.inc.
Тоже муторно.
← →
Дмитрий С © (2013-03-19 20:51) [12]
> О-Сознание (19.03.13 20:01) [11]
>
В опциях проекта пропиши
Delphi Compiler -> Conditional defines.
Не забудь выбрать Target = All configurations
← →
Sapersky (2013-03-19 21:01) [13]Проверил дефайны в свойствах проекта - работает только если файл, которому нужен дефайн, находится в папке проекта.
Разве что в новых версиях это исправили (проверял на D5).
← →
Дмитрий С © (2013-03-19 21:24) [14]
> Sapersky (19.03.13 21:01) [13]
Пробовал build делать?
← →
Sapersky (2013-03-19 21:38) [15]Да, билд помог, спасибо.
← →
О-Сознание (2013-03-19 23:34) [16]
> Дмитрий С © (19.03.13 20:51) [12]
В Project -> Options и в других местах, такого не нашёл.
← →
Дмитрий С © (2013-03-20 11:54) [17]
> О-Сознание (19.03.13 23:34) [16]
>
Версия дельфи какая?
← →
О-Сознание (2013-03-20 14:40) [18]
> Дмитрий С © (20.03.13 11:54) [17]
D7
← →
Sapersky (2013-03-20 17:41) [19]D5:
http://s2.ipicture.ru/uploads/20130320/YEHRS5VS.png
← →
О-Сознание (2013-03-21 00:40) [20]И что это даёт?
Те дефайны которые мы укажем в "Conditional defines" будут просто глобальными на все проекты.
← →
Германн © (2013-03-21 02:12) [21]
> О-Сознание (21.03.13 00:40) [20]
>
> И что это даёт?
> Те дефайны которые мы укажем в "Conditional defines" будут
> просто глобальными на все проекты.
>
Это диалог Project Options. Так что эти дефайны будут действовать только в данном конкретном проекте.
← →
Cobalt © (2013-03-21 17:25) [22]директивы работают только там, где они объявлены.
объявил в модуле - действуют на модуль. на соседний модуль не действуют (если в нем не объявил)
объявил в проекте - действует на все модули проекта
← →
О-Сознание (2013-03-31 22:31) [23]
> Cobalt © (21.03.13 17:25) [22]
> объявил в проекте - действует на все модули проекта
Неа.
Так как же быть?
.inc - файлы в каждом проекте делать?
← →
Германн © (2013-04-01 02:23) [24]
> Так как же быть?
Разобраться детально.
Что нужно, зачем нужно и как нужно.
← →
О-Сознание (2013-04-01 16:58) [25]
> Германн © (01.04.13 02:23) [24]
>
>
> > Так как же быть?
>
> Разобраться детально.
> Что нужно, зачем нужно и как нужно.
Дык я ж объяснил почему не подходят приведённые решения.
← →
han_malign (2013-04-03 10:25) [26]
unit myPng;
{.$DEFINE USE_PNG}
interface
{$IFDEF USE_PNG}
const pngVer = 1.7;
{$ELSE}
const pngVer = 0;
{$ENDIF}
{$IFDEF USE_PNG}
...
implementation
...
{$ENDIF}
end;unit MyGraph;
...
implementation
uses myPng;
{$IF pngVer > 0}
{$MESSAGE HINT "PNG Used"}
{$ELSE}
{$MESSAGE WARN "PNG not implemented"}
{$IFEND}
...
{$IF pngVer >= 1.1}myPng.doSomethingV11(...);{$IFEND}
...
end;//uses myPng;
{$IF declared(pngVer)}
{$IF pngVer > 1}
{$MESSAGE HINT "PNG v1.X Used"}
{$ELSE}
{$MESSAGE ERROR "PNG - unexpected version"}
{$IFEND}
{$ELSE}
{$MESSAGE WARN "PNG not implemented"}
{$ENDIF}
← →
имя (2013-04-04 01:45) [27]Удалено модератором
← →
О-Сознание (2013-04-28 22:42) [28]Вопрос ещё не решен.
Все методы предложенные выше - не подходят, уже объяснял почему.
← →
Юрий Зотов © (2013-04-28 23:14) [29]
> О-Сознание (28.04.13 22:42) [28]
> Все методы предложенные выше - не подходят
Этого не может быть. Значит Вы что-то делаете не так.
1. Уберите {$DEFINE USE_PNG} отовсюду.
2. Все {$I UsePng.inc} тоже уберите отвсюду. И файл UsePng.inc убейте.
3. В опциях тех проектов, где это надо, пропишите USE_PNG.
4. Из опций тех проектов, где это не надо, уберите USE_PNG.
5. Перебилдите все проекты (обязательно полный build, а не compile).
← →
sniknik © (2013-04-29 11:08) [30]ты случаем не оппонент Rouse_ которому предложили поработать со своей же идеологией?
http://delphimaster.net/view/15-1366649723/
;))
← →
О-Сознание (2013-04-29 23:44) [31]
> Юрий Зотов © (28.04.13 23:14) [29]
Это тоже самое, что подкладывать где нужно UsePng.inc.
> sniknik © (29.04.13 11:08) [30]
>
> ты случаем не оппонент Rouse_ которому предложили поработать
> со своей же идеологией?
Не помню, чтобы я там отмечался.
← →
sniknik © (2013-04-30 07:54) [32]> Не помню, чтобы я там отмечался.
а зачем там? он спорил с кем то с работы/"внешнего мира", а не просто создал тему чтобы поспорить с кем то здесь...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.004 c