Чем открыть проект delphi

Обновлено: 05.07.2024

Я довольно часто сталкивался с тем, что разработчики на Delphi (можно сказать традиционно) компилируют свои приложения "ручками", что далеко не production-решение, а со стороны выглядит кустарщиной и "делаем на-коленке", хотя продукты бывают весьма серьёзными и продаваемыми. Вероятно, это пошло ещё с тех пор, когда для автоматизации нужно было придумывать свои батнички, которые запускали компилятор командной строки dcc32 с нужными параметрами. Некоторые даже сделали свой "Публикатор" — Delphi-expert, который делает работу сервера сборок: компилирует (правда, открытый в IDE) проект, выставляя ему взятый из какой-то БД инкрементированный номер версии, записывает некий changelog и копирует это куда-то в сетевой каталог.

Я не буду вдаваться в исторический экскурс как было раньше. Я расскажу как есть/можно сейчас, и как это использовать для повышения эффективности своей работы.

Файл проекта современной версии Delphi — это .dproj -файл (здесь и далее я буду ориентироваться на Delphi 10 Rio, но с небольшими отличиями это верно для всех более ранних версий Delphi, начиная с 2007). В нём хранятся все настройки проекта, которые обычно изменяют в IDE (меню Project - Options (Ctrl+Shift+F11) ). В рамках данной статьи я сконцентрируюсь на "основных", которые понадобятся для демонстрации общих принципов: это Config — конфигурация, Platform — платформа, OutputDirectory — путь выходного файла и ConditionalDefines (директивы условной компиляции). Остальные настройки, если таковые нужно менять при сборке, я предлагаю выявить самостоятельно. Этот же .dproj -файл, если в него заглянуть обычным текстовым редактором, является ничем иным как скриптом сборки MSBuild (давайте создадим простое консольное приложение и назовём его DelphiAutomatedBuild):

Скрипты сборки MSBuild также используются для описания проектов, например, Visual Studio. Я коснусь некоторых деталей MSBuild, но я предлагаю читателю самостоятельно освоить его азы. Что нам это даёт? Это позволяет нам выполнить сборку Delphi-проекта из командной строки одной строчкой (что, в свою очередь, позволяет автоматизировать сборку проекта)

Если же читатель откроет командную строку в каталоге с проектом (hint: это можно быстро сделать, щёлкнув правой кнопкой мыши (ПКМ) на проекте в IDE — Show in Explorer, затем в Проводнике ПКМ — Открыть окно команд), то вышеприведённая команда не сработает:

т.к по умолчанию, пути к MSBuild-у в PATH нет. Так что добавим его туда:

Сборка запустилась, но завершилась с ошибкой. В чём же дело? Почему нет задачи build ?

Тут мы заглянем в .dproj -файл, там мы найдём следующее:

И если мы откроем файл в каталоге Delphi
c:\Program Files\Embarcadero\Studio\20.0\Bin\CodeGear.Delphi.Targets , то мы увидим там ещё один MSBuild-скрипт, в котором объявлена задача Build :

Т.е. нужно задать переменную окружения BDS ( $(VAR) в MSBuild разыменовывает как свойство (Property) VAR , заданное в скрипте, так и одноимённую переменную окружения), указать в ней путь к той версии Delphi, которая будет компилировать проект (да-да, один и тот же проект можно компилировать разными версиями Delphi, лишь заменив значение переменной окружения BDS ). Тогда скрипт проекта разыменует $(BDS) , найдёт общий .Targets файл из каталога Delphi и запустит задачу Build .
Сделаем это:

Та-дам! Проект скомпилировался. В выходном каталоге Win32\Debug лежит наш DelphiAutomatedBuild.exe .

Но это отладочная сборка (по умолчанию, новый проект активируется в Debug-конфигурации), а мы хотим для выпуска релиза собирать Release-конфигурацию (подробнее про конфигурации). В IDE это сделать легко, но это ручная работа, и это то, чего мы хотим избежать, то ради чего мы читаем эту статью. Заглянем опять в .dproj -файл, и заметим в его начале такую строку

Мы ж программисты, и понимаем, что если свойство/переменная Config , не задана, то по умолчанию она принимается равной Debug . Это как раз то, что мы меняем в IDE (поменяйте в IDE текущую конфигурацию на Release и сохраните проект — строка сменится на

в коде для контроля исполняемого файла добавим такое:

и убедимся, что conditional defines в настройках проекта для Release и Debug-конфигураций содержат RELEASE и DEBUG, соответственно

Так что нужно лишь задать свойство Config в нужное нам значение, и собираться будет нужная конфигурация:

Часто разработчики указывают путь отладочной (а то и релизной) сборки в какой-то каталог на своём диске, но мы автоматизируем сборку и подразумеваем, что выполняться она будет на сервере сборок, а получать выходные файлы непонятно где в файловой системе сервера — как-то неправильно. Значит, мы должны уметь задавать этот выходной путь. Заглянем опять в .dproj :

но что это? тут нет условия (если не задано), и свойство задаётся всегда, сможем ли мы его переопределить? попробуем

Та-дам! Появился каталог binaries , в котором — наш DelphiAutomatedBuild.exe . Как же так? Тот, кто уже освоил MSBuild , знает, что свойства, заданные при запуске MSBuild -а, имеют высший приоритет, и уже не могут быть переопределены в скрипте. Сейчас нас это устраивает. Но с этим мы ещё столкнёмся.

Выходной каталог мы менять научились. Теперь нужно собирать сразу и релизную, и отладочную версии (надеюсь, не надо объяснять зачем такое надо). Конечно, можно запустить сначала с одним параметром Config — Debug , затем — с другим — Release , но это потребует, во-первых, дублирования остальных параметров (например, DCC_ExeOutput и параметра версии сборки (об этом — ниже)), а во-вторых, это придётся учитывать и при конфигурировании сервера сборок, что влечёт дублирование и там (либо написание очередного батничка, что лишает встроенной поддержки MSBuild-а сервером сборок). Так что требуется выполнить всё ту же одну команду

но она бы выполнила сборку обеих конфигураций. Можно так? Конечно!
Напишем свою задачу Build . Поскольку есть нежелание менять что-то в файле, который меняет IDE (часто самым дурацким образом; кстати, есть три замечательных инструмента от автора эксперта MMX: DProjNormalizer, DProjSplitter и сумма их — ProjectMagician — для удобства отслеживания изменений .dproj -файлов), то сделаем отдельный файл проекта. Назовём его DAB.ciproj (CI-project, от CI — Continuous Integration):

и… получаем один файл DelphiAutomatedBuild.exe в binaries , той конфигурации, что собралась последней:

DCC_Exeoutput задался и для каждой задачи MSBuild — это хорошо, но каждая конфигурация скомпилировала файл в один и тот же каталог. Тогда зададим подкаталоги соответственно конфигурации:

и теперь на выходе мы имеем два файла

binaries\Debug\DelphiAutomatedBuild.exe и binaries\Release\DelphiAutomatedBuild.exe .

Теперь представим, что у нас есть желание/необходимость временно задавать conditional define при сборке проекта (например, у нас есть демо-версия, в которой мы ограничиваем функциональность нашей программы, если задано переменная условной компиляции TRIAL )

В нашем демо-коде это выглядит так

Добавим в Debug-конфигурацию conditional define TRIAL и посмотрим, куда оно прописывается в .dproj:

Ага, т.е. если задать /p:DCC_Define=TRIAL,

Сработало, но как-то не так, куда-то делись DEBUG и RELEASE, а нам такого не надо, т.к. у нас там обычно куча полезных define-ов.
А дело в том, что свойства заданные через командную строку имеют высший приоритет, и переопределяют значения в скриптах. Но выход есть.
Определяем переменную окружения DCC_Define :

С компиляцией разобрались, теперь можно настраивать сервер сборок, который бы после каждого изменения в центральном репозитории (я ориентируюсь на Git, но для того же SVN это тоже применимо) собирал нам проект, дабы мы ничего не забыли добавить в исходники, и прогонял тесты, буде таковые у нас есть, и мы всегда будем готовы выпустить релиз или отдать на тестирование уже готовую сборку.

Однако ж, при таких частых сборках может стать проблема нумерации версий. Какая? Каждая новая сборка будет иметь ровно ту версию, которая прописана в свойствах проекта, а менять её с каждым коммитом — как-то рутинно и не "по-нашенски", к тому же, зависит от разработчика человека (а что такое "человеческий фактор" — не мне вам рассказывать).

В рамках обычной для Windows/Delphi-проектов нумерации Major.Minor.Release.Build , нормальный сервер сборок, как правило, умеет увеличивать для каждой сборке число Release , и, естественно, передавать её в скрипты сборки. Однако ж, если мы посмотрим на то, как задаётся информация о версии в .dproj-файле

Любознательный читатель наверняка уже догадывается как примерно такое использовать.
Добавим в наш DelphiAutomatedBuild.dproj

(Условие "$(MSBuildToolsVersion) >= 4.0" необходимо для того, чтобы проект не падал с ошибкой при сборке в IDE, которая, как мы помним, использует MSBuild 3.5, который не поддерживает UsingTask)

Поставим в свойствах проекта "Include version information in project" и добавим вывод текущей версии (оставим это за скобками), и:

Заключение

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

В дальнейшем я ещё планирую рассказать

  1. как запускать статический анализ кода (на примере FixInsight, не реклама!) во время сборки
  2. как писать unit-тесты на Delphi (увы, некоторым приходится объяснять ))). И запускать их в пайплане сборки )
  3. как "прикрутить" сборку Delphi-проектов к GitLab CI
  4. а также, как можно использовать отладчик WinDbg, например, для поиска причин сбоя/падения приложений из-за библиотек, написанных на Delphi (ну, конечно же, как при этом интегрировать формирование необходимых для этого PDB-файлов в автосборку)

З.Ы. Буду рад ответить на любые вопросы, в том числе, в телеграме, как в личке, так и в чатах @Delphi_Lazarus и @DelphiCommunity

Менеджер проектов Delphi

В этом уроке мы детально рассмотрим окно «Менеджер проектов» интегрированной среды разработки Delphi. А также узнаем какие файлы формирует Delphi IDE при создании проекта и зачем эти файлы нужны.

Откройте в Delphi проект из нашего прошлого урока, или создайте новый проект. Как это делается вы должны помнить, но если кто-то забыл, то я напомню File — New — VCL Forms Application – Delphi.

Давайте теперь посмотрим на «Менеджер проектов». И, чтобы раскрыть все ветви дерева, выберите первый элемент в менеджере проектов и нажмите <*> на дополнительной цифровой клавиатуре.

Видео по теме

Давайте подробно рассмотрим каждый пункт менеджера проектов

  1. ProjectGroup1 (Заголовок дерева) — имя группы проектов. В одной группе проектов может быть несколько приложений. Но так как у нас создано сейчас только одно приложение, то здесь оно у нас одно. Если нажать на кнопку «Add new project…», то перед нами появится окно, в котором мы можем выбрать какой новый проект добавить в эту группу.
  2. Project.exe — имя проекта (приложения). Когда мы создаем новое приложение, Delphi дает ему имя Project плюс порядковый номер 1, 2, 3 и т.д.
  3. В разделе Build Configurations (Debug) перечислены различные конфигурации сборки, которые доступны для вашего проекта. Более новые версии Delphi имеют три конфигурации сборки по умолчанию: Debug, Release и All configurations. Debug — устанавливают для отладки и тестирования. Release — это уже готовая версия. И All configurations — родительская конфигурация для всех остальных конфигураций.
    Конфигурации можно добавлять и удалять (в том числе Debug и Release). Конфигурация All configurations не удаляемая, в ней указываются общие для всех конфигураций настройки.
  4. В разделе Target Platforms (Целевые платформы) можно добавить, или удалить целевую платформу. Например, сейчас наше приложение разрабатывается под Windows 32 бит. Если мы хотим разрабатывать приложение для Windows 64 бит, то правой кнопкой мыши вызываем контекстное меню и в нем выбираем Add Platform…
  5. Unit1.pas — модуль. Проект состоит из модулей. Каждое окно программы хранится в отдельном модуле. Так как у нашего приложения есть окно, то именно оно и хранится в модуле Unit1.pas. Файлы с расширением pas содержат исходный код модуля. Имя этих файлов такое же, как и имя модуля в менеджере проектов.
  6. Unit.dfm — это визуальная форма. Она сохраняется с тем же именем, что и модуль, только с расширением dfm.

Если в вашем проекте будет несколько приложений, то только одно из них может быть активным. И только активное приложение мы можем выполнять и отлаживать в среде разработки. Имя активного приложения выделяется жирным шрифтом. Чтобы изменить активное приложение, достаточно дважды кликнуть по его имени левой кнопкой мыши. Также можно вызвать контекстное меню, кликнув по имени приложения правой кнопкой мыши и затем выбрать Activate (Активировать).

Но пока давайте будем работать только с одним приложением. Поэтому если вы создали второе приложение, то его можно удалить. Для этого выделяем имя второго приложения и нажимаем клавишу Del, или Delete (у кого какая клавиатура). В появившемся окне о подтверждении удаления нужно выбрать Yes (Да) и приложение будет удалено из группы проектов.

Но реально из диска файлы не удаляются. Они остаются на месте. Просто не отображаются в проекте. Поэтому если они вам вообще не нужны, то нужно их найти и удалить. Это если вы сохраняли проект, после того как добавили в него второе приложение. Если же вы не сохраняли проект, то соответственно файлы второго приложения и не создавались.

Теперь давайте перейдем в папку с нашим проектом и посмотрим на файлы присутствующие в ней.

  • в файлах с расширением dproj содержится конфигурация нашего проекта;
  • в файлах с расширением dpr находится сам проект;
  • в файлах с расширением res содержатся ресурсы нашего проекта: кнопки, иконки, курсоры и т.д.;
  • в файлах с расширением pas содержится исходный код модулей;
  • в файлы с расширением dfm содержится визуальная информация о форме.
  • в папке Win находится папка Debug, а в ней — файлы с расширением dcu и exe.

Файл с расширением dcu — это откомпилированный модуль проекта в промежуточном формате. Когда происходит компиляция программы, то все модули компилируются в файлы формата DCU, а потом они собираются в один файл. Если модуль не изменился с последней компиляции, то Delphi пропустит его и при сборке будет использовать уже существующий файл DCU. Так увеличивается скорость компиляции.

Ну и файл с расширением exe — это наша программа, исполняемый файл того приложения, которое мы скомпилировали в Delphi.

Файлы с расширением dfm, pas, dpr и dproj можно открыть обычным блокнотом и внести в них нужные изменения. Но это делается только в том случае если по какой-то причине эти файлы не открываются в IDE Delphi.

Вы можете заметить, что когда открываете уже существующий проект в Delphi, то можно открыть файл dpr, а можно открыть и dproj. И эффект будет одинаковым. В чем же разница?

Как я уже упоминал, файл dpr содержит исходный код Delphi (это самый важный файл), а файл dproj содержит конфигурацию проекта.

Открывая один из них, интегрированная среда разработки автоматически ищет другой.

Попробуйте удалить файл dproj и открыть (оставшийся) файл dpr — IDE Delphi сообщит вам, что будет сгенерирован новый файл dproj.

А вот файл dpr ни в коем случае не удаляйте!

Надеюсь, этот урок стал для вас полезным, и вы подпишитесь на мой канал. Также буду очень благодарным за ваши лайки и оставленные комментарии под этим видео. Канал D-Nik Webmaster.

В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто - весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто - программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi . На самом деле типов файлов гораздо больше, но эти - базовые.

*.dpr - файл проекта

Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source .

*.dfm - файл описания формы

В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.

*.pas - модуль (самостоятельный, либо модуль формы)

Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов - в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами - один содержит её состояние и объекты, а второй - код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях - отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.

*.res - файл ресурсов

Это дополнительный файл. В нём находятся данные различных типов - это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.

Работа с проектом

Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.

Создание нового проекта

Для создания "чистого листа" следует выбрать в меню File -> New -> Application . В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.

Открытие существующего проекта (или файла)

Для этого существует команда File -> Open. Выбрав файл *.dpr , откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm ) откроется что-либо другое (например, отдельная форма).

С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save , Вы сохраните только текущую форму, но не более того, а проект останется "висеть в воздухе". File -> Save As. - стандартный пункт, который делает то же самое, что и Save , только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All . При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.

Меню File содержит все основные команды управления проектом

Железное правило: каждый проект должен быть сохранён в отдельном каталоге!

Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!

Запуск и остановка программы

Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет - решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как "убивать" Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences , блок Autosave options - опция Editor files .

Запомните следующие основные горячие клавиши:

Ctrl+F9 - компиляция программы. Что такое компиляция? Говоря простым языком - создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто "собирает" всю программу, но не запускает её.

F9 - запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.

Ctrl+F2 - остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.

Все эти команды доступны и напрямую из меню: Run -> Run , Project -> Compile , Run -> Program Reset .

Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:

Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options . В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного " Project1 " - это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения - файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно - по умолчанию файлу присваивается расширение .exe . Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr . Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле " scr " проблема мигом решится.

Вкладка Application в окне свойств проекта влияет на внешний вид кнопки программы на панели задач

В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.

Здравствуй уважаемый новичок! В этом уроке мы познакомимся с Delphi 7 и научимся компилировать программу.
Итак, если вы приняли решение изучать язык программирования Delphi, то сразу без предисловий перейдем к делу.
Программа Delphi 7 состоит из четырех основных окон:

Главное окно(Рис 1)

Главное окно (Рис 1).

Инспектор объектов(Рис 2)

Инспектор объектов (Рис 2).
Окно Form(Рис 3)

Окно Form (Рис 3).

Окно программы(Рис 4)

Редактор кода (Рис 4).

Главное окно – окно управления проектом и средой разработки. Здесь же находятся вкладки с компонентами (Рис 1).
Инспектор объектов – окно, в котором задаются свойства различным компонентам (Рис 2).
Окно Form – визуальное окно программы. (Рис 3)
Редактор кода – окно, в которое мы будем записывать код (Рис 4).

Run

Давайте уже напишем нашу первую программу!
Нажмите на зеленый треугольник в главном окне.
После нажатия на зеленый треугольник, наша программа начнет компилироваться (создаваться), то есть компилятор проверит окно редактора кода на наличие ошибок, но так как мы в окно редактора кода еще ничего не писали, то ошибок возникнуть не должно. После компиляции, Delphi запустит нашу программу для тестирования.
Вот что мы увидим:

Окно программы

Теперь закройте скомпилированную программу и мы продолжаем знакомство с Delphi. В главном окне можно увидеть палитру компонентов. На рисунке она обведена красным прямоугольником.

Палитра компонентов

Между компонентами можно переключаться, щелкая по вкладкам. Каждая вкладка имеет свои уникальные компоненты. Так же, если у вас не помещаются все вкладки в палитру компонентов, то появляются так называемые ушки, для перелистывания вкладок в ту или иную сторону. На вкладке Standard самым первым стоит значок курсора (к нему проведена зеленая линия), это не компонент. Он нужен для отмены выбора компонента. Вот например, вы выбрали какой-то компонент и для того, чтобы отменить свой выбор, нужно просто щелкнуть по этому значку курсора. Существуют не только стандартные компоненты Delphi, но и создаваемые любителями. О том как устанавливать компоненты мы поговорим в следующих уроках.

А теперь добавим на форму компонент под названием Button (кнопка). Он находится в на вкладке Standard. Нажмите на него, а потом нажмите где-нибудь на форме.
Получится вот так:

Button

Готово! Кнопка на форме! Перейдем в инспектор объектов.
На вкладке Properties отображены все свойства компонента, в данном случае свойства нашей кнопки.
На вкладке Events отображены все события компонента, в данном случае опять же свойства нашей кнопки.
Изменим свойство Caption (заголовок). Вместо Button1 напишем Выход:

Caption

Вы можете поэкспериментировать с другими свойствами, изменяя их значения. Например попробуйте изменить свойства Width и height (ширина и высота), left и top (расстояние слева и сверху внутри формы), Cursor (выберите любой курсор из списка и после компиляции при наведении на кнопку будет отображаться выбранный вами курсор).

Маленько отвлеклись от курса. Продолжаем. На форме изменилось название кнопки. Теперь перейдем на вкладку Events и кликнем 2 раза напротив надписи OnClick:

Events

Если все сделано правильно, то автоматически станет активным окно редактора кода, в него мы и будем вписывать действие, которое случится при клике на кнопку.

Cod

Кликая 2 раза по событию OnClick, мы вставили процедуру, такую некую заготовку. Думаю, по названию кнопки вы догадались, что при нажатии на нее программа закроется. Нам надо осуществить это действие. Пишем команду close между ключевыми словами begin и end. Все команды в Delphi заканчиваются точкой с запятой, по этому между ключевыми словами должен быть код close; Вообще в Delphi, все команды пишутся между ключевыми словами begin и end, то есть начинаем и заканчиваем.

После всех манипуляций получилось вот такое чудо: Компилируем нашу программу, нажимая на зеленый треугольник или на клавишу F9. Кстати, для того, чтобы просто скомпилировать программу и проверить код на ошибки, не запуская программу потом для тестирования, нужно нажать Ctrl + F9.

По умолчанию программа компилируется в папке C:\Program Files\Borland\Delphi7\Projects. Давайте сохраним проект в другую папку. Нажимаем в меню главного окна File->Save Project As… и выбираем папку для сохранения. Сейчас в папке находится только проект, для того чтобы там появился exe-файл, нужно еще раз скомпилировать программу.

Теперь давайте закроем наш проект, а потом снова откроем. Нажимаем в главном окне File->Close All, если вы не сохранили проект или после сохранения где-то его изменили, то у вас вылезет окно с запросом на сохранение проекта, нажмите на кнопку Save и сохраните проект.

Сохранение

Далее в главном окне нажимаем File->Open Project. и открываем проект. У меня проект называется Project1.dpr, если вы при сохранении изменяли название, то соответственно открывайте то, что сохранили :)
Что бы создать новый проект, нажмите File->New->Application.

В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто - весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто - программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi. На самом деле типов файлов гораздо больше, но эти - базовые.

*.dpr - файл проекта

Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source. В более новых версиях Delphi файл проекта имеет другое расширение - .bdsproj (в Borland Developer Studio 2006), .dproj (в Delphi 2007 и далее). Обратная совместимость поддерживается.

*.dfm - файл описания формы

В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.

*.pas - модуль (самостоятельный, либо модуль формы)

Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов - в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами - один содержит её состояние и объекты, а второй - код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях - отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.

*.res - файл ресурсов

Это дополнительный файл. В нём находятся данные различных типов - это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.

*.dof, *.cfg - файлы конфигурации проекта

В этих файлах хранятся опции текущего проекта (которые настраиваются в окне Project - Options). При отсутствии этих файлов будут использоваться стандартные параметры.

*.dcu, *.obj - объектные файлы

Эти файлы представляют собой уже скомпилированные модули. При очередной компиляции Delphi создаёт для каждого pas-файла соответствующий dcu-файл. Это существенно ускоряет компиляцию в дальнейшем, т.к. имеющиеся файлы просто включаются в конечный exe-файл, а не обрабатываются заново. OBJ-файлы - это тоже скомпилированные модули, но применяющиеся в С++. При работе в Delphi эти файлы не используются, но при необходимости их можно сформировать.

Файлы, расширение которых начинается со знака тильды ("

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

Работа с проектом

Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.

Создание нового проекта

Для создания "чистого листа" следует выбрать в меню File -> New -> Application. В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.

Открытие существующего проекта (или файла)

Для этого существует команда File -> Open. Выбрав файл *.dpr, откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm) откроется что-либо другое (например, отдельная форма).

Сохранение

С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save, Вы сохраните только текущую форму, но не более того, а проект останется "висеть в воздухе". File -> Save As. - стандартный пункт, который делает то же самое, что и Save, только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All. При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.

Меню File содержит все основные команды управления проектом

Железное правило: каждый проект должен быть сохранён в отдельном каталоге!

Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!

Запуск и остановка программы

Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет - решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как "убивать" Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences, блок Autosave options - опция Editor files.

Запомните следующие основные горячие клавиши:

Ctrl+F9 - компиляция программы. Что такое компиляция? Говоря простым языком - создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто "собирает" всю программу, но не запускает её.

F9 - запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.

Ctrl+F2 - остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.

Все эти команды доступны и напрямую из меню: Run -> Run, Project -> Compile, Run -> Program Reset.

Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:

Свойства проекта

Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options. В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного "Project1" - это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения - файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно - по умолчанию файлу присваивается расширение .exe. Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr. Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле "scr" проблема мигом решится.

Вкладка Application в окне свойств проекта влияет на внешний вид кнопки программы на панели задач

Заключение

В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.

Автор: Ерёмин А.А.

Статья добавлена: 14 апреля 2007

Рейтинг статьи: 4.71 Голосов: 14 Ваша оценка:

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

Читайте также: