Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2009, 13:20   #1
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию Условная компиляция

Есть крупный проект (множество юнитов).

Мне необходимо в одном месте определить {$DEFINE DEMO}, а далее везде, где нужно, в программе использовать условную компиляцию, типа {$IFDEF DEMO}...{$ENDIF} или {$IFDEF DEMO}...{$ELSE}...{$ENDIF}

Так вот, как сделать DEMO глобальным, т.е. что бы он был виден из всех юнитов? А то препроцессор видит его только в текущем модуле, а прописывать {$DEFINE DEMO} во всех модулях программы как-то глупо и неудобно.
Arigato вне форума Ответить с цитированием
Старый 09.11.2009, 14:54   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Project > Options... Закладка Directories/Conditionals, поле "Conditional defines". В котором и надо ввести символ (DEMO, например.)
Впрочем, это только для Delphi.
Скандербег вне форума Ответить с цитированием
Старый 09.11.2009, 17:45   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Скандербег
Да я пытался сделать так, прежде, чем тут спросить. Но не работает (Делфи 6).
Прописал туда: DEMO
В программе пишу: {$IFDEF DEMO}showmessage('demo');{$ENDIF}
Не срабатывает.


P.S. Что-то я ступил, и правда, работает. Спасибо

Понятно. Если прописываешь туда DEMO, но не вносишь изменения в программу, то она не перекомпилируется и запускается старый exe'шник. Странный глюк Делфи (видимо, это в старой 6-рки).

Последний раз редактировалось Arigato; 09.11.2009 в 17:50.
Arigato вне форума Ответить с цитированием
Старый 09.11.2009, 17:51   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
не работает (Делфи 6)
А в семерке все нормально работает...
Может, пора перейти хотя бы на семерку ?

З.Ы. Я уже сколько раз говорил, что шестерка - самая глюкавая из всех версий. Давно, когда она вышла, мы все на фирме ее себе поставили, но очень скоро вернулись к пятерке - она хоть и не очень стабильная, зато менее глюкавая...

Последний раз редактировалось mihali4; 09.11.2009 в 17:56.
mihali4 вне форума Ответить с цитированием
Старый 09.11.2009, 17:56   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
то она не перекомпилируется и запускается старый exe'шник.
так понятно что перекомпилить надо, в коде то не было изменений.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.11.2009 в 20:19.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.11.2009, 18:20   #6
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Скандербег
Да я пытался сделать так, прежде, чем тут спросить. Но не работает (Делфи 6).
Прописал туда: DEMO
В программе пишу: {$IFDEF DEMO}showmessage('demo');{$ENDIF}
Не срабатывает.

P.S. Что-то я ступил, и правда, работает. Спасибо
Понятно. Если прописываешь туда DEMO, но не вносишь изменения в программу, то она не перекомпилируется и запускается старый exe'шник. Странный глюк Делфи (видимо, это в старой 6-рки).
Хм, "странный глюк" не более чем невнимательность (с кем не бывает):
После изменений в условиях компиляции не забывайте Project>Build. А 6 или 7 - это все равно. Глюков в этой части ни там, ни там не наблюдалось.

Последний раз редактировалось Скандербег; 09.11.2009 в 18:22.
Скандербег вне форума Ответить с цитированием
Старый 11.09.2010, 01:54   #7
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Поднимаю данную тему, ибо столкнулся с такой же проблемой как и у Arigato...и действительно - это то ли баг Делфи вобще (ибо стоит 2010), то ли что-то не понятое...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 11.09.2010, 07:10   #8
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

spamer, Arigato озвучил две проблемы. какая из них беспокоит?
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условная операция DEV C+++ edmynt Помощь студентам 1 11.10.2009 15:40
компиляция DarK_NighT Общие вопросы Delphi 1 25.03.2009 13:18
компиляция Рамик Помощь студентам 6 14.03.2009 16:07
Компиляция в Qt Diman2008 Qt и кроссплатформенное программирование С/С++ 6 16.11.2008 20:57
Компиляция. Бро Общие вопросы C/C++ 2 03.06.2008 06:46