Язык программирования Delphi: Комментарии и переменные (Урок №3)

Язык программирования Delphi довольно прост в изучении, но при этом, он достаточно мощный. На этом языке программирования написано очень много действительно крутых программ, таких как: Open Server, Total Commander, Skype (до того, как это приложение выкупила компания Microsoft), Light Alloy, The KMPlayer, AIMP, FastStone Image Viewer, Guitar Pro (до версии 6.0), FL Studio, Sublimetext и много других.

В прошлых уроках, мы ознакомились с оболочкой Delphi (интегрированной средой разработки программ). А начиная с этого урока — мы уже начнем изучать сам язык программирования Delphi.

И первое с чего предлагаю начать наше обучение — это комментарии в Delphi.

Что такое комментарии в программировании?

Комментарии — это любой текст, который никак не влияет на код программы. Комментарии никогда не компилируются и не добавляются в исполняемый файл. Они используются разработчиками, для того чтобы пояснить тот, или иной участок кода.

В Delphi комментарии можно оформить двумя способами:

  1. Используя двойной слеш. Все что находится после двойного слеша в Delphi — это комментарий. Но так можно закомментировать только одну строку.
  2. Используя фигурные скобки. Все что заключено в фигурные скобки — это тоже комментарий. Этим способом можно закомментировать несколько строк.

Вот небольшой пример:

// Это комментарий
А это уже не комментарий
Это не комментарий // А вот это уже комментарий
{Все что в фигурных
скобках — это
комментарий}

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

Давайте создадим новый проект в Delphi, или откроем тот проект, который мы создавали на прошлом уроке, и подробно рассмотрим каждую строчку его кода.

Если кто забыл, то напомню — чтобы переключаться между визуальной формой и редактором кода нужно использовать клавишу <F12>. Нажимаем F12 и таким образом переходим в редактор кода.

Я понимаю, что пока для вас все это «темный лес», но в процессе создания реальных программ, всё начнет проясняться. Запомнить всё сразу невозможно, да и не нужно. Главное сейчас понять смысл написанной программы.

unit Unit1; // Имя модуля

// начало объявления интерфейсов
interface

uses // после этого слова идет перечисление подключенных модулей
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type // после этого слова идет объявление типов
TForm1 = class(TForm) // Начало описания нового объекта TForm1

// Здесь описываются компоненты и события

private // После этого слова можно описывать закрытые данные объекта
{ Private declarations } // это подсказка, которую сгенерировал сам Delphi

{Здесь можно описывать переменные и методы, доступные только для объекта TForm1}

public // После этого слова можно описывать открытые данные объекта
{ Public declarations } // это подсказка, которую сгенерировал сам Delphi

{Здесь можно описывать переменные и методы, доступные из любого другого модуля}
end;

var // Объявление глобальных переменных
Form1: TForm1; // Это описана переменная Form1 типа объекта TForm1

// начало реализации
implementation

{$R *.dfm} // подключение .dfm файла. Это файл с данными о визуальных объектах

end. // конец модуля (слово end с точкой)

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

Точка с запятой «;» в Delphi обозначает конец оператора.

Как видите, в приведенном выше примере кода, в конце нескольких строк проставлен именно этот знак.

Знак «;» ставится только после оператора! И этот знак никогда не ставится после ключевых слов. Если смотреть на наш код, то после uses, type, begin, implementation, private, public точка с запетой не ставится.

Большинство ключевых слов выделяются жирным шрифтом.

Структура кода в Delphi

В самом начале нашего кода стоит имя модуля. Это имя такое же, как и имя файла модуля, но без расширения. Вручную менять это имя не желательно. Оно формируется тогда, когда вы сохраняете свой проект (или модуль) выбрав меню File | Save As.

После имени модуля идет раздел interface. В нём описываются интерфейсы модуля, которые мы будем реализовывать. Концом данного раздела является ключевое слово implementation (реализация).

После implementation начинается ещё один раздел и заканчивается он словом end с точкой.

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

В разделе interface также могут быть и подразделы: uses, type, var и const.

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

Например, мы хотим, чтобы при нажатии на кнопку осуществлялся запуск браузера, и в нём открывалась какая-нибудь ссылка. Для этого уже есть готовая функция ShellExecute. И все, что нам нужно — это указать компилятору путь, где описана эта функция, понятным компилятору языком. Поэтому в uses мы прописываем ShellApi. Теперь для реализации нашей задумки достаточно написать всего лишь одну строчку кода и все заработает без каких-либо проблем.

ShellExecute(Handle, 'open', 'https://d-nik.pro', nil, nil, SW_SHOWNORMAL) ;

Любой программный код в Delphi заключается между begin и end (операторные скобки).

  • begin — это начало кода;
  • end — это конец кода.

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

Объявление переменных в Delphi осуществляется с помощью ключевого слова var. В нашем коде уже объявлена одна переменная — Form1. И поскольку эта переменная описана после объявления объекта и его составляющих, то эта переменная глобальная.

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

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

Язык программирования Delphi. Практическое задание.

  • Создайте новый проект в Delphi (File — New — VCL Forms Application – Delphi).
  • Поместите на форму два компонента TEdit и одну кнопку TButton.
  • Сохраните этот проект (Save All).
  • Перейдите в редактор кода (F12) и объявите глобальную переменную YourName типа String в разделе interface. Эта переменная будет видна везде и всегда, при работе программы.
  • Теперь в Объектном инспекторе выберите компонент TButton (Button1) и на вкладке Events, создайте для него обработчик события OnClick.
  • Перед begin, созданной процедуры объявите локальную переменную Age типа String. Эта переменная будет видна только в данном модуле. В других модулях программы мы не сможем ее использовать.
  • Между begin и end созданной процедуры, напишите код:
YourName := Edit1.Text; // присваиваем переменной YourName значение Edit1
Age := Edit2.Text; // присваиваем переменной Age значение Edit2
  • Теперь создайте ещё одну форму File — VCL Form – Delphi.
  • Поместите на эту форму компонент TLabel.
  • Для того, чтобы мы могли взаимодействовать с главной формой программы, необходимо подключить модуль Unit1. Для этого в меню File выбираем UseUnit.
  • Создайте обработчик события для этой формы OnShow. В объектном инспекторе выберите Form2 TFotm и на вкладке Events кликните рядом с OnShow.
  • Напишите код для созданной процедуры:
Label1.Caption := YourName; // присваиваем строке заголовок равный глобальной переменной YourName
  • Перейдите на вкладку Unit1 и подключите к нашей главной форме модуль Unit2 (File — UseUnit).
  • Добавьте в процедуру TForm1.Button1Click еще одну строку кода:
Form2.Show; // отобразить форму 2
  • Сохраните и запустите весь проект.

При нажатии на кнопку у вас должна появиться вторая форма и на ней должен быть выведен тот же текст, что и в Edit1.

А вот если мы попытаемся получить данные переменной Age во второй форме, то у нас ничего не получится.

Label1.Caption := Age;

Компилятор выдаст ошибку:

Undeclared identifier: 'Age'

Что означает «Необъявленный идентификатор». То есть компилятор не понимает, где находится переменная Age и какие нужно взять данные, чтобы присвоить их заголовку компонента Label1.

Ведь локальная переменная — это переменная, объявленная внутри блока кода. Область видимости такой переменной начинается в точке её объявления и заканчивается в конце этого блока.

Таким образом, переменная Age видна только в пределах процедуры TForm1.Button1Click модуля 1 (Unit1).

АВТОРИЗАЦИЯ