Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

Возможности компилятора   Найти похожие ветки 

 
Mouserx   (2006-07-05 12:26) [0]

Здраствуйте мастера. Интересует следующее:
Можно ли заставить компилятор собирать код в разных вариантах. Например ввести какойто флаг компиляции, и если он установлен, то делать так, чтобы компилятор не видел и некомпилировал некоторые ф-ции, методы класса и тд.


 
Desdechado ©   (2006-07-05 12:31) [1]

{$DEFINE}
{$IFDEF}
{$IFNDEF}


 
Amoeba ©   (2006-07-05 12:32) [2]


> Mouserx   (05.07.06 12:26)  
> Здраствуйте мастера. Интересует следующее:
> Можно ли заставить компилятор собирать код в разных вариантах.
>  Например ввести какойто флаг компиляции, и если он установлен,
>  то делать так, чтобы компилятор не видел и некомпилировал
> некоторые ф-ции, методы класса и тд.

Можно. Для этого существуют директивы условной компиляции. Как их использовать, есть в любом приличном руководстве по Паскалю, а также в справке Delphi.


 
Mouserx   (2006-07-05 12:32) [3]

Вот в Си такое есть ... а как в Делфи использовать? ... можно по подробнее?


 
Desdechado ©   (2006-07-05 12:32) [4]

Ну, и в свойствах проекта есть место для определения таких штук, которые проверяются через указанное выше


 
MBo ©   (2006-07-05 12:32) [5]

$DEFINE  $IFDEF и дркгие директивы условной компиляции


 
Mouserx   (2006-07-05 12:34) [6]

Спасибо. Описание ненадо - Гугл помогает уже. :-)


 
Mouserx   (2006-07-05 12:49) [7]

Такой еще вопросик:
В случае, если "флага не будет существовать" - ненужный код точно не будет физически в готовом продукте находиться? Или же он будет, но не будет используемым.


 
MBo ©   (2006-07-05 12:51) [8]

>точно не будет физически в готовом продукте находиться?
точно


 
Desdechado ©   (2006-07-05 12:52) [9]

Компилятор умный, неиспользуемое в EXE не включает.
Потому как внутри таких проверок может быть код, который компилируется исключительно под Kylix, например.


 
Плохиш ©   (2006-07-05 12:53) [10]


> Mouserx   (05.07.06 12:49) [7]

Компиляторы turbo/borland pascal, а затем и delphi не включают неиспользуемый код в исходный файл.


 
Mouserx   (2006-07-05 13:24) [11]

А еще такой вопрос:
А где обьявить этот "флаг", чтобы он был виден во всех модулях (units) моей программы. я Обьявил его в main, но в других модулях он не виден. Даже написал  после implementation:
uses main;
и всеравно он не видится.


 
evvcom ©   (2006-07-05 13:39) [12]

Все дефайны в файл, например, include.inc, а потом везде (где надо) {$INCLUDE include.inc}


 
Desdechado ©   (2006-07-05 13:39) [13]

[4]


 
evvcom ©   (2006-07-05 14:13) [14]

> [13] Desdechado ©   (05.07.06 13:39)

Этот вариант, имхо, удобен, когда одни и те же исходники используются в разных проектах с разными условиями компиляции. Ту же часть, которая не зависит от проекта, опять имхо, лучше все-таки в инклуд. Так нагляднее по крайней мере. Этот инклуд можно открыть на закладке редактора, там же и править, удобно переключаясь на другие модули.


 
Mouserx   (2006-07-05 14:46) [15]

Desdechado, а можно по подробнее где именно это указывается? :-)


 
StriderMan ©   (2006-07-05 15:53) [16]


> Desdechado, а можно по подробнее где именно это указывается?
>  :-)

Project - options - Diectories/Conditionals - Conditionals - Conditional Defines


 
Mouserx   (2006-07-05 15:59) [17]

Вписал туда просто MyFlag и не работает. :-(
Во всех конструкциях:
{$IFDEF MyFlag}
{$ELSE}
{$ENDIF}
компилируется код, написаный в {$ELSE}

P.S. Delphi 2005


 
Кабан   (2006-07-05 16:20) [18]

Пуск\Поиск\Файлы и папки - Искать Текст
Набираешь  $DEFINE
Указываешь путь к исходникам VCL
Жмешь кнопку Найти


 
Mouserx   (2006-07-05 16:22) [19]

Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно код не поменяется. Вот непонятно почему обычный "Run" этого не делает.


 
StriderMan ©   (2006-07-05 16:43) [20]


> Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно
> код не поменяется. Вот непонятно почему обычный "Run" этого
> не делает.

да, есть такой момент. чтобы компилятор "прочухал" о новых условиях надо пересобрать весь проект. RUN компилирует только модули, в которых были изменения, а остальное собирает из уже скомпилированных .DCU


 
Mouserx   (2006-07-05 16:45) [21]

Понятненько. Всем спасибо. :-)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.039 c
2-1154336912
Der Nechk@ssoff
2006-07-31 13:08
2006.08.20
Random


15-1153770856
palva
2006-07-24 23:54
2006.08.20
Активный отдых в Подмосковье


2-1154185066
читатель
2006-07-29 18:57
2006.08.20
Первый вопрос.


4-1145516275
Dimich1978
2006-04-20 10:57
2006.08.20
Программно нажать на кнопку закрытия формы(крестик)


3-1150283086
pooh
2006-06-14 15:04
2006.08.20
Ошибка при изменении записи в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский