Мова програмування 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).

Наші рекомендації

Сollaborator

Hosting Ukraine

АВТОРИЗАЦІЯ