Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Режим отдалки и условная компиляция.


Автор: Mifody 14.1.2011, 19:34
Всем доброго времени суток.
Поискал, не нашел, если было такое - кните ссылкой в лицо.

Что хочется раелизовать: использую условную компиляцию {$Define myVal} {$IfDef myVar} и прочее. Так вот, можно ли как то управлять условной компиляцией в зависимости от того, как запускается программа. Из под среды или из проводника.

Для чего нужно (скорее всего такой вопрос возникнет). Необходимо в режиме отладки отключить определенную часть исходного кода. Зачем? Ну надо, очень надо.

З.Ы. Да, я знаю что дерективы можно прописывать в файле, и потом внедрять {$I 'filename'} в программу, и там можно задавать разные параметры условной компиляции, чес сейчас и пользуюсь. Но конкретно для этого случая - не совсем удобно. 
Всем заранее спасибо за ответы.

Автор: БелАмор 14.1.2011, 20:51
Цитата(Mifody @  14.1.2011,  19:34 Найти цитируемый пост)
Да, я знаю что дерективы можно прописывать в файле, и потом внедрять {$I 'filename'} в программу, и там можно задавать разные параметры условной компиляции, чес сейчас и пользуюсь.

Совершенно не обязятельно использовать включаемый файл. Можно все нужные символы задать в настройках проекта в разделе Directories/Conditionals.

Цитата(Mifody @  14.1.2011,  19:34 Найти цитируемый пост)
можно ли как то управлять условной компиляцией в зависимости от того, как запускается программа. Из под среды или из проводника

В данном случае речь идёт не об условной компиляции, а об определении в рантайме способа запуска программы. Хорошего во всех отншениях способа не знаю, но одним из вариантов мог бы быть такой: прописать в Run/Parameters запуск программы с параметром, который будет присутствовать при запуске из среды и отсутсвоать при запуске из проводника. При желании можно сделать эту настройку по умолчанию, чтобы она присутствовала во всех новых проектах. Если программа штатно может запускаться с параметрами, то нужно будет предусмотреть дополнительные моменты.

Автор: Mifody 14.1.2011, 20:57
Цитата

запуск программы с параметром


ммм, блин, не прокатит. Там могут быть параметры коммандной строки :(.
Кстати, а никто не знает, ведь есть защита копонент, когда они работают только из под среды, а отдельно либо наг скрины выскакивают, либо вообще не работают.

Автор: БелАмор 14.1.2011, 22:45
Цитата(Mifody @  14.1.2011,  20:57 Найти цитируемый пост)
Кстати, а никто не знает, ведь есть защита копонент, когда они работают только из под среды

Если мне не изменяет память, так делала демо-версия EhLib. Но там просто искалось окно Delphi и при запущенной Delphi программа спокойно запускалась и из проводника, т.е. хорошего решения там тоже не было.

Цитата(Mifody @  14.1.2011,  20:57 Найти цитируемый пост)
Там могут быть параметры коммандной строки 

Тогда можно задавать переменную окружения.

Автор: Keeper89 14.1.2011, 23:09
Цитата(Mifody @  14.1.2011,  20:57 Найти цитируемый пост)
ммм, блин, не прокатит. Там могут быть параметры коммандной строки :(.

Ну и что? Можно получить все параметры и определить нужный.

Автор: Akella 15.1.2011, 11:59
Цитата(Mifody @  14.1.2011,  19:34 Найти цитируемый пост)
Необходимо в режиме отладки отключить определенную часть исходного кода.

попробуй
http://www.delphisources.ru/pages/faq/base/is_app_debugging.html

Добавлено через 2 минуты и 28 секунд
Можно искать через FindWindow(nil, 'Имя окан дельфи'); если нашли, что значит дельфи запущено, но здесь нужно подумать о том, что твоя программа может быть запущена НЕ из-под дельфи, а дельфи просто может быть запущена отдельною.

Добавлено через 3 минуты и 27 секунд
Попробуй директиву: {IF DEBUG}

Добавлено через 4 минуты и 20 секунд
ещё вариант
Код
if DebugHook <> 0 then ShowMessage('Программа в режиме отладки'); 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)