![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возможности компилятора
Mouserx © (2006-07-05 12:26:00)Здраствуйте мастера. Интересует следующее:
Можно ли заставить компилятор собирать код в разных вариантах. Например ввести какойто флаг компиляции, и если он установлен, то делать так, чтобы компилятор не видел и некомпилировал некоторые ф-ции, методы класса и тд.
Mouserx (2006-07-05 16:45:00) [1]Понятненько. Всем спасибо. :-)
StriderMan (2006-07-05 16:43:00) [2]
> Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно
> код не поменяется. Вот непонятно почему обычный "Run" этого
> не делает.
да, есть такой момент. чтобы компилятор "прочухал" о новых условиях надо пересобрать весь проект. RUN компилирует только модули, в которых были изменения, а остальное собирает из уже скомпилированных .DCU
Mouserx (2006-07-05 16:22:00) [3]Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно код не поменяется. Вот непонятно почему обычный "Run" этого не делает.
Кабан (2006-07-05 16:20:00) [4]Пуск\Поиск\Файлы и папки - Искать Текст
Набираешь $DEFINE
Указываешь путь к исходникам VCL
Жмешь кнопку Найти
Mouserx (2006-07-05 15:59:00) [5]Вписал туда просто MyFlagи не работает. :-(
Во всех конструкциях:
{$IFDEF MyFlag}
{$ELSE}
{$ENDIF}
компилируется код, написаный в {$ELSE}
P.S. Delphi 2005
StriderMan (2006-07-05 15:53:00) [6]
> Desdechado, а можно по подробнее где именно это указывается?
> :-)
Project - options - Diectories/Conditionals - Conditionals - Conditional Defines
Mouserx (2006-07-05 14:46:00) [7]Desdechado, а можно по подробнее где именно это указывается? :-)
evvcom (2006-07-05 14:13:00) [8]> [13] Desdechado © (05.07.06 13:39)
Этот вариант, имхо, удобен, когда одни и те же исходники используются в разных проектах с разными условиями компиляции. Ту же часть, которая не зависит от проекта, опять имхо, лучше все-таки в инклуд. Так нагляднее по крайней мере. Этот инклуд можно открыть на закладке редактора, там же и править, удобно переключаясь на другие модули.
Desdechado (2006-07-05 13:39:00) [9][4]
evvcom (2006-07-05 13:39:00) [10]Все дефайны в файл, например, include.inc, а потом везде (где надо)
{$INCLUDE include.inc}
Mouserx (2006-07-05 13:24:00) [11]А еще такой вопрос:
А где обьявить этот "флаг", чтобы он был виден во всех модулях (units) моей программы. я Обьявил его в main, но в других модулях он не виден. Даже написал после implementation:
uses main;
и всеравно он не видится.
Плохиш (2006-07-05 12:53:00) [12]
> Mouserx (05.07.06 12:49) [7]
Компиляторы turbo/borland pascal, а затем и delphi не включают неиспользуемый код в исходный файл.
Desdechado (2006-07-05 12:52:00) [13]Компилятор умный, неиспользуемое в EXE не включает.
Потому как внутри таких проверок может быть код, который компилируется исключительно под Kylix, например.
MBo (2006-07-05 12:51:00) [14]>точно не будет физически в готовом продукте находиться?
точно
Mouserx (2006-07-05 12:49:00) [15]Такой еще вопросик:
В случае, если "флага не будет существовать" - ненужный код точно не будет физически в готовом продукте находиться? Или же он будет, но не будет используемым.
Mouserx (2006-07-05 12:34:00) [16]Спасибо. Описание ненадо - Гугл помогает уже. :-)
MBo (2006-07-05 12:32:00) [17]$DEFINE $IFDEF и дркгие директивы условной компиляции
Desdechado (2006-07-05 12:32:00) [18]Ну, и в свойствах проекта есть место для определения таких штук, которые проверяются через указанное выше
Mouserx (2006-07-05 12:32:00) [19]Вот в Си такое есть ... а как в Делфи использовать? ... можно по подробнее?
Amoeba (2006-07-05 12:32:00) [20]
> Mouserx (05.07.06 12:26)
> Здраствуйте мастера. Интересует следующее:
> Можно ли заставить компилятор собирать код в разных вариантах.
> Например ввести какойто флаг компиляции, и если он установлен,
> то делать так, чтобы компилятор не видел и некомпилировал
> некоторые ф-ции, методы класса и тд.
Можно. Для этого существуют директивы условной компиляции. Как их использовать, есть в любом приличном руководстве по Паскалю, а также в справке Delphi.