Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возможности компилятора


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо