
- •Основы программирования
- •Введение
- •Основы delphi
- •Общая технология программирования
- •Язык программирования
- •Объектно-ориентированное программирование
- •Визуальное программирование
- •Событийно управляемое программирование
- •Windows-приложение
- •Среда программирования
- •Первоначальные сведения о проекте приложения
- •Встроенный отладчик
- •Использование встроенных классов
- •Иерархия классов
- •Использование палитры компонентов и инспектора объектов
- •Использование графики
- •Основные инструменты
- •Основные характеристики шрифтов
- •Графические данные и палитра
- •Некоторые общие свойства компонентов
- •Сохранение проекта
- •Построение простейшего проекта
- •Понятие исключительной ситуации
- •Введение в object pascal
- •Структура приложения
- •Структура программы-проекта
- •Структура модуля
- •Пример 1
- •Описания программных элементов
- •Программные элементы и адреса памяти
- •Области видимости
- •Правила записи имен
- •Время жизни идентификаторов
- •Использование локальных переменных в примере 1
- •Использование глобальных переменных в примере 1
- •Простые типы
- •Целые типы
- •Целые типы
- •Некоторые операции с целым типом
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Интервальный тип
- •Вещественный тип
- •Вещественные типы
- •Некоторые операции с вещественным типом
- •Тип дата-время
- •Выражения
- •Константы
- •Типизированные константы.
- •Переменные
- •Операции
- •Унарная операция not (отрицание)
- •Логические операции and, or, xor
- •Функции
- •Порядок вычисления выражений
- •Виды операторов
- •Простые операторы
- •Составной оператор
- •Операторы условного перехода
- •Оператор if
- •Пример 2
- •Оператор case
- •Пример 3
- •Использование enter в примере 3
- •Операторы цикла
- •Оператор цикла for
- •Пример 4
- •Оператор цикла while
- •Пример 5
- •Оператор цикла repeat
- •Пример 6
- •Использование процедур break и continue
- •Пример 7
- •Массивы
- •Статические массивы
- •Динамические массивы
- •Пример 8
- •Пример 9
- •Записи (объединения)
- •Оператор with
- •Пример 10
- •Совместимость и преобразование типов данных
- •Идентичность типов
- •Совместимость типов
- •Совместимость по присваиванию
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Пример 11
- •Множества
- •Операции над множествами
- •Пример 12
- •Вариантный тип данных
- •Процедуры и функции
- •Процедура
- •Функция
- •Рекурсия
- •Формальные и фактические параметры
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры без типа
- •Массивы открытого типа
- •Парамеры по умолчанию
- •Процедура exit
- •Директивы подпрограммы
- •Соглашения по передаче данных
- •Директива forward
- •Директива external
- •Директива assembler
- •Перегруженные подпрограммы
- •Пример 13
- •Инкапсуляция
- •Класс как объектный тип
- •Наследование
- •Области видимости
- •Операции is и as
- •Виды методов
- •Методы virtual и полиморфизм
- •Методы dynamic
- •Методы message
- •Методы abstract
- •Методы override
- •Методы class
- •Пример 14
- •Динамическое создание компонентов
- •Использование класса со счетчиком объектов
- •Отслеживание разрушения объектов
- •События
- •Указатели на методы
- •Пример 15
- •Типы ссылки на класс
- •Свойства
- •Свойства simple
- •Свойства enumerated
- •Свойства set
- •Свойства object
- •Свойства array
- •Задание начальных значений свойствам
- •Пример 16
- •Файловые типы
- •Текстовые файлы
- •Типизированные файлы
- •Файлы без типа
- •Дополнительные процедуры и функции
- •Пример 17
- •Компонент tmainmenu
- •Указатели
- •Пример 18
- •Динамические структуры данных
- •Однонаправленные списки
- •Двунаправленные списки
- •Стеки, очереди
- •Бинарные деревья
- •Пример 19
- •Процедурный тип
- •Программные единицы dll
- •Пример 20
- •Технологии программирования
- •Потоки данных
- •Пример 21
- •Пример 22
- •Интерфейс drag and drop
- •Пример 23
- •Технология drag and dock
- •Пример 24
- •Использование функций windows api при работе с файлами
- •Пример 25
- •Использование отображаемых файлов
- •Пример 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Пример 27
- •Использование блокировки в примере 27
- •Многопоточное приложение в примере 28
- •Проблемы синхронизации потоков
- •Список используемых в примерах компонентов
- •Список используемых компонентов и других классов
- •Библиографический список
- •Оглавление
Структура модуля
Модуль является программной единицей для хранения элементов программирования. Модули бывают двух типов:
стандартные, заранее созданные разработчиками Delphi и включенные в среду программирования;
модули разработчика, создаваемые программистом.
Модуль состоит из следующих частей:
заголовок (Unit);
интерфейс (nterface);
исполнительная часть (Implementation);
секция инициализации (Initialization);
секция завершения (Finalization);
ключевое слово end с точкой.
Особенности этих частей заключаются в том, что каждая из них может присутствовать только один раз, их последовательность только такая, как указано выше. Секции инициализации и завершения могут отсутствовать.
Заголовок начинается с ключевого слова Unit, за которым следует имя. Имя модуля используется как имя файла, в который записывается текст программы. Delphi по умолчанию присваивает имя Unit1 - в дальнейшем это имя можно изменить при сохранении файла.
Интерфейс модуля – часть модуля доступная для других программных единиц. Интерфейс начинается с зарезервированного слова Interface. Заканчивается интерфейсная секция началом исполнительной части.
Исполнительная часть модуля начинается с ключевого слова Implementation, а завершается либо началом секции инициализации, если она есть, либо зарезервированным словом end. В этой секции определяются все процедуры и функции, методы классов и обработчики событий, объявленные в интерфейсной секции. Дополнительно могут содержаться определения программных элементов, которые не объявлены в интерфейсной части. Эти процедуры и функции являются недоступными для других программных единиц и используются для выполнения каких-либо внутренних действий в данной секции.
Секция инициализации содержит операторы, которые выполняют при запуске программной единицы какие-либо вспомогательные действия: открываются файлы, инициализируются переменные и т. д. Выполняются эти операторы только один раз. Начинается эта секция ключевым словом Initialization. Эта секция необязательна.
Секция завершения содержит операторы, которые выполняются при завершении приложения. Они исполняются один раз. Обычно в этой секции удаляются какие-либо временные файлы, записывается какая либо информация и т.п. Начинается эта секция с ключевого слова Finalization. Эта секция необязательна, однако, она должна присутствовать, хотя бы пустая, если есть секция инициализации.
Примером встроенного библиотечного модуля является модуль Forms, который содержит методы, позволяющие построить форму. Ниже приводится пример модуля:
Unit Unit1;
Interface
Uses {Подключаемые модули}
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
Type {Объявления типов используемых переменных}
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var { Объявления переменных}
Form1: TForm1;
F: TextFile;
S: String;
Implementation
{$R *.DFM} {Загрузка файла ресурсов формы}
procedure
TForm1.Button1Click(Sender: TObject);
begin
S:=Edit1.Text; {Чтение строки S}
Edit1.Text:='';
end;
procedure
TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
Initialization
AssignFile(F,’Myfile.txt’);
Rewrite(F); {Открытие файла }
Finalization
WriteLn(F,S); {Запись в файл строки S}
CloseFile(F); {Закрытие файла }
end.
Текст этой программы записывается в файл Unit1.pas, автоматически создается файл ресурсов для формы, который будет иметь имя Unit1.dfm.
Данная программа открывает файл Myfile.txt и записывает туда строку S, которая вводится с клавиатуры, используя объект Edit1.
Структура DLL будет описана далее.
При запуске приложения на выполнение сначала формируется выполняемый файл. Этот процесс делится на две стадии. Во-первых, компилятор транслирует исходный текст кода программы и формирует двоичный объектный код (в частности, создается файл Unit1.dcu для откомпилированных файлов Unit1.pas и Unit1.dfm в данном случае). Во-вторых, компоновщик связывает полученный объектный код со встроенными библиотечными объектными кодами модулей. В результате создается исполняемый файл, в данном случае, Project1.exe.