Условная компиляция предназначена для управления компиляцией программного кода. В Delphi имеется несколько способов её реализации, но в основном используются только четыре.
Delphi/Pascal
//Код программы
В этой реализации условная директива проверяет, был ли определён указанный в ней символ условной компиляции. Если да, то код программы между директивами и компилируется. В противном случае, код между этими двумя директивами компилироваться не будет.
Delphi/Pascal
//Код программы
//Код программы
Эта реализация отличается от предыдущей наличием директивы . В этом случае, если условный оператор определён, будет компилироваться код программы между директивами и . В противном случае, будет компилироваться код программы между директивами и .
По сути, первая и вторая реализации ведут себя как краткая и полная форма обычного условного оператора if.
Как определить символ условной компиляции? Для этого также существует два способа.
Первый – использование директивы
Embarcadero Delphi Обзор преимуществ / Установка / Удаление / Community Edition IDE / 2022 Бесплатно
Delphi/Pascal
Второй способ. Определить его в свойствах проекта. Для этого в меню Project нужно выбрать пункт Options и в поле Conditional defines ввести символ условной компиляции.
Третий и четвёртый способы являются аналогией первого и второго соответственно. Отличие в том, что используется условная директива . Эта директива проверяет, что указанный символ не определён. То есть, является прямой противоположностью директивы .
В случае , код между этой директивой и либо будет скомпилирован, только если указанный в ней символ условной компиляции не определён. В остальном, принцип реализации аналогичен приведённому для директивы :
Delphi/Pascal
//Код программы
//Код программы
//Код программы
В Delphi уже имеется ряд символов условной компиляции. Вот их «классический» набор.
Символ условной компиляции | Значение |
MSWINDOWS | Код компилируется только в ОС Windows |
WIN32 | То же самое, только код компилируется лишь для 32-разядной ОС. |
LINUX | Был введён в Delphi 6 вместе с MSWINDOWS для определения платформы, для которой необходимо компилировать тот или иной код.Так как компиляция для Linux в Delphi до сих пор отсутствует, то использование этого символа в программах не имеет смысла. |
CONSOLE | Консольное приложение |
CPU386 | Компиляция для процессоров типа i386 или более современных. Так как речь идёт о процессорах типа i386, использование данного символа уже давно потеряло актуальность. |
CONDITIONAL EXPRESSIONS | Проверяет использование директив $IF |
Компиляция проекта и запуск на другом компьютере Rad Studio Delphi
Также в число «классических» входит и символ VERxxx, который указывает конкретную версию компилятора. По сути, это целое семейство символов условной компиляции, в которое с выходом новой версии Delphi добавляется новый символ соответствующий этой версии. Ниже представлена таблица соответствия версий Delphi символам условной компиляции VERxxx (материал взят с Исходники.ру).
Версия Delphi | Символ условной компиляции |
1 | VER80 |
2 | VER90 |
3 | VER100 |
4 | VER120 |
5 | VER130 |
6 | VER140 |
7 | VER150 |
8 | VER160 |
2005 | VER170 |
2006 | VER180 |
2007* | VER180 или VER185 |
2009 | VER200 |
2010 | VER210 |
XE | VER220 |
XE2 | VER230 |
XE3 | VER240 |
XE4 | VER250 |
XE5 | VER260 |
XE6 | VER270 |
XE7 | VER280 |
XE8 | VER290 |
10 Seatle | VER300 |
10.1 Berlin | VER310 |
10.2 Tokyo | VER320 |
*-версии 2006 и 2007 совместимы между собой на уровне двоичного кода. Поэтому, для поддержки обеих версий следует использовать символ VER180. Если необходима поддержка только версии 2007, необходимо использовать символ VER185.
После выхода в 2011 году кроссплатформенной библиотеки FireMonkey, были введены новые символы условной компиляции для MacOS и iOS. А, в 2013 году с появлением поддержки Android был введён и специальный символ условной компиляции для этой ОС. Ниже представлен перечень этих символов.
Платформа | Символ условной компиляции |
MacOS | MACOS |
iOS | IOS |
Android | ANDROID |
Условная компиляция на примере кроссплатформенного приложения:
Источник: streletzcoder.ru
7.2.5. Компиляция и сборка проекта
Компиляция и сборка проекта могут выполняться на любой стадии разработки проекта. Под компиляцией понимается получение объектных модулей (DCU-файлов) из исходных текстов программных модулей (PAS-файлов). Под сборкой понимается получение выполняемого файла из объектных модулей. В среде Delphi компиляция и сборка проекта совмещены.
Для выполнения компиляции достаточно выполнить команду меню Project | Compile или нажать комбинацию клавиш Ctrl+F9. При этом компилируются все исходные модули, содержимое которых изменялось после последней компиляции. В результате для каждого программного модуля создается файл с расширением DCU (сокр. от Delphi Compiled Unit). Затем среда Delphi компилирует главный файл проекта и собирает (иногда говорят компонует) из DCU-модулей выполняемый файл, имя которого совпадает с именем проекта. К сведению профессионалов заметим, что смышленый компилятор среды Delphi выбрасывает из выполняемого файла весь неиспользуемый программный код, поэтому не стоит волноваться по поводу лишних объектов и подпрограмм, которые могут присутствовать в подключенных модулях.
Существует особый вид компиляции и сборки — полная принудительная компиляция всех программных модулей проекта, для которых доступны исходные тексты, с последующей сборкой выполняемого файла. При этом не важно, вносились в них изменения после предыдущей компиляции или нет. Полная компиляция проекта выполняется с помощью команды главного меню Project | Build . В результате тоже создается выполняемый файл, но на это тратиться немного больше времени.
7.2.6. Запуск готового приложения
Когда после многочисленных компиляций вы исправите все ошибки и получите-таки выполняемый файл, можно будет посмотреть на результат вашего самоотверженного труда. Для этого надо выполнить созданное приложение с помощью команды меню Run | Run или клавиши F9. Перед выполнением будет автоматически повторен процесс компиляции (если в проект вносились изменения) и после его успешного завершения приложение запустится на выполнение. В результате вы увидите на экране его главную форму.
Вот собственно и все, что мы хотели поведать вам о проекте. В целом вы представляете, что такое проект, и знаете, как им управлять. Пора заняться составными частями проекта и одновременно основными элементами любого приложения в среде Delphi — формами.
7.3. Форма
7.3.1. Понятие формы
Из первой главы вы уже имеете общее представление о форме, теперь настало время изучить ее более пристально. Фактически форма — это главный компонент приложения, который, как и менее значительные компоненты, имеет свойства. Важнейшие свойства формы: заголовок, высота, ширина, местоположение, цвет фона и др. При создании новой формы среда Delphi сама задает начальные значения свойствам формы, но вы можете изменить их так, как считаете нужным. Это можно сделать во время проектирования формы (в окне свойств) или во время выполнения приложения (с помощью операторов языка Delphi).
Форма имеет очень много свойств, и поначалу в них легко запутаться. Практика показывает, что путаница возникает из-за алфавитного порядка свойств в окне Object Inspector: близкие по смыслу свойства оказываются разбросанными по ячейкам списка. Чтобы у вас сложилось представление о возможностях формы, рассмотрим основные свойства формы в порядке их важности. Для этого нам понадобится новое приложение.
Выберите в меню команду File | New | Application. Среда Delphi автоматически создаст в новом проекте чистую форму и поместит ее исходный текст в редактор кода (рисунок 7.18).
Рисунок 7.18. Форма на экране и ее описание в редакторе кода
Сразу сохраните проект и его форму, чтобы дать им осмысленные имена. Выберите в меню команду File | Save All и дайте модулю имя Main.pas, а проекту — имя FormTest.dpr. Полигон для изучения формы подготовлен, можно заняться ее свойствами.
Источник: studfile.net
Как мне скомпилировать мой проект Delphi в командной строке?
Кому-нибудь когда-нибудь удавалось скомпилировать свои проекты Delphi 6 и 7 (НЕ любые Delphi> 7) с помощью командной строки?
Все инструкции, которые я вижу, не очень ясно, что именно нужно куда-то направлять!
Ищу пошаговые инструкции.
Ответы должны быть ограничены Delphi 6 и 7: я понимаю, что Delphi 2006 и> использует MSBuild, что намного проще.
Ссылки также высоко ценятся.
6 ответы
Сделать это несложно. У меня здесь на моем компьютере установлена стандартная установка Delphi 5, и когда я открываю командную строку, перехожу к $(DELPHI)DemosThreads каталог и войдите dcc32.exe thrddemo.dpr приложение построено на командной строке.
Для вашего собственного проекта вам может потребоваться добавить некоторые переключатели, чтобы включить каталоги файлов, каталоги вывода, определения или подобные вещи. Бег dcc32.exe без параметров — список переключателей и параметров. Все это тоже описано в документации.
Для повторяемости вы должны создать командный файл или обычный Makefile.
Обратите внимание, что оба проекта cfg файл и общий dcc32.cfg в каталоге Delphi содержат важные настройки. Для получения информации о том, как они влияют на сборку, см., Например, эта ссылка на Delphi Wikia.
ответ дан 03 дек ’09, 07:12
Говоря о вики Delphi: есть страница именно по этой теме: delphi.wikia.com/wiki/Compile_from_Commandline который я только что расширил. — Dummzeuch
Для автоматизации сборки я использую Апачский муравей, Которая является программный инструмент для автоматизации процессов сборки программного обеспечения. Я использую его во всех своих проектах, от Delphi 6 до Delphi 2009 и Free Pascal.
Вещи, которые он может делать «из коробки», включают генерацию контрольной суммы MD5, создание ZIP-файла, текстовый поиск / замену (полезно для генерации заголовка авторского права), выполнение операторов SQL, обработку XSLT.
Например, для компиляции всех проектов с Delphi 6 это (часть) скрипта:
;$/Lib/System»/> ;$/D6;$/d6″/> ;$/D6;$/d6″/>
Бесплатные серверы CI (непрерывной интеграции) с открытым исходным кодом, такие как Hudson / Jenkins, поддерживают сценарии сборки Apache Ant из коробки, что означает, что вы можете настроить их автоматически для сборки проекта всякий раз, когда вы вносите изменения в исходный репозиторий.
Создан 08 июля ’15, 08:07
выглядит красиво . дайте, пожалуйста, больше объяснений — сборщик
Мой ответ включает две ссылки на домашнюю страницу проекта и статью в Википедии. У вас есть конкретный вопрос? — MJN
Да, это хороший способ. Я сделал нечто подобное с NAnt, портом Ant для .NET. — Конор Бойд
Вы можете собрать все, используя эту командную строку:
«C:Program FilesBorlandDelphi7BinDCC32.exe» -Q -B your-project.dpr
Поместите эту строку в файл .bat, чтобы не вводить ее всегда. Взгляните на параметры командной строки, запускающие это:
«C:Program FilesBorlandDelphi7BinDCC32.exe» -h
Кстати: -Q — тихая компиляция, а -B все перестроит. Если вы хотите более быструю компиляцию, не используйте -B.
Он будет использовать все параметры из файла your-project.cfg. Я нашел это исполняемый файл dof2cfg очень полезно. С его помощью я могу редактировать текстовый файл .dof и передавать изменения в командную строку и IDE. Не нужно редактировать его для каждого проекта.
Важное предупреждение для длинных путей: Компилятор командной строки Delphi 7 имеет очень странную ошибку. Если ваш путь очень длинный, он завершится неудачей с непостижимой ошибкой: нарушение прав доступа без какой-либо значимой информации. Если это не удается без какого-либо разумного мотива, попробуйте уменьшить максимальный размер пути и размер имени файла. Поместите проект в корневую папку, обычно решайте его.
ответ дан 11 мар ’19, в 15:03
Источник: stackovergo.com