Здравствуйте, Diouzshev, Вы писали:
D>Типичная конструкция:
Я бы рекомендовал максимально избегать таких типичных конструкций. К сожалению, они иногда необходимы, в таких случаях — советую максимально локализовать.
Активизировать эти условия я бы предложил из соответствующей строки опций проекта (при компиляции из IDE), либо директивой -D при компиляции из командной строки. Причина — как правило, нужна и необходима единая настройка для всего проекта. Компиляция, при которой половина модулей откомпилирована в режиме A, а половина — в режиме NOT_A, мягко говоря вряд ли будет работать. Это будет еще хуже, чем DLL Hell.
Исключений можно назвать два. Во-первых, бывают сугубо локальные переменные, которые устанавливаются в модуле, в нем же используются и нигде больше не нужны. Во-вторых, часто делать стандартный файл, подключаемый по {$I} — это решение для случая, когда хочется настраиваться под разные версии дельфы, для кода типа
Здравствуйте, Diouzshev, Вы писали:
D>Hello, Diouzshev! D>You wrote on Fri, 27 May 2005 12:50:30 GMT: D>Чот-то непонятно получилось Попробую так:
D>есть модуль участвующий в нескольких проектах с конструкцией: D> {$IFDEF MY_DEF} D> код (1) D> {$ELSE} D> код (2) D> {$ENDIF}
D>Как сделать так, чтобы проект Progject1.dpr скомпилировался с кодом D>(1), а проект Project2.dpr с кодом (2)?
D>Если сделать {$DEFINE MY_DEF} в другом модуле или DPR-файле -- не срабатывет
D>With best regards, Alexander Diouzshev-Maltsev.
Самый простой
Project/Options, закладка Directories/Conditionals. Добавить в Cоnditionals MY_DEF для первого проэкта.
Здравствуйте, Diouzshev, Вы писали:
D>есть модуль участвующий в нескольких проектах с конструкцией: D> {$IFDEF MY_DEF} D> код (1) D> {$ELSE} D> код (2) D> {$ENDIF}
D>Как сделать так, чтобы проект Progject1.dpr скомпилировался с кодом D>(1), а проект Project2.dpr с кодом (2)?
D>Если сделать {$DEFINE MY_DEF} в другом модуле или DPR-файле -- не срабатывет
А если сделать Project1.inc файл с {$DEFINE MY_DEF}
и подключить {$I Project1.inc}?
Hello, Danchik!
You wrote on Fri, 27 May 2005 13:04:07 GMT:
D> Самый простой
D> Project/Options, закладка Directories/Conditionals. Добавить в D> Cоnditionals MY_DEF для первого проэкта.
Спасибо, помогло...
Только Build project вместо привычного F9 нужен — сама делфя не перекомпиливает...
Здравствуйте, alive, Вы писали: A>А если сделать Project1.inc файл с {$DEFINE MY_DEF} A>и подключить {$I Project1.inc}?
тогда он подцепится и во втором проекте.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Diouzshev, Вы писали:
D>Hello, All! D>Типичная конструкция:
D> {$IFDEF MY_DEF} D> код (1) D> {$ELSE} D> код (2) D> {$ENDIF}
D>Как сделать так, чтобы в проект Progject1.dpr скомпилировался с кодом (1), D> а проект Project2.dpr с кодом (2)?
D>Если сделать {$DEFINE MY_DEF} в другом модуле -- не отрабатывет
D>With best regards, Alexander Diouzshev-Maltsev.
Я делаю так :
в файл Progject1.dpr вставляю строку
{$include 'E:\Projects\Project1\Defines.inc'} // с полным путём
в файл Progject2.dpr вставляю строку
{$include 'E:\Projects\Project2\Defines.inc'}
во все файлы *.pas
вставляю строку
{$include 'Defines.inc'}
Здравствуйте, icWasya, Вы писали:
W>Я делаю так :
W>в файл Progject1.dpr вставляю строку W>{$include 'E:\Projects\Project1\Defines.inc'} // с полным путём
угу, и потом вытащив ЭТО из CVS буду у себя править на полный свой путь?
-D в makefile рулит...
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, alive, Вы писали: A>>А если сделать Project1.inc файл с {$DEFINE MY_DEF} A>>и подключить {$I Project1.inc}? S>тогда он подцепится и во втором проекте.
Я не точно выразил свою мысль
В общий для проектов файл подключаем {$I Project.inc}
а для каждого из проектов создаем файл Project.inc со специфичными
дефайнами.