Линейные односвязные списки
Линейные односвязные списки используют чаще других списковых структур, так как они сравнительно просты, но одновременно в отличие от одномерных массивов позволяют:
· работать с произвольным количеством элементов, добавляя и удаляя их по мере необходимости;
· осуществлять вставку и удаление записей, не перемещая остальных элементов последовательности.
Недостатком этой структуры является то, что при поиске элемента по номеру приходится просматривать все ранее расположенные элементы, в то время как в одномерном массиве возможен прямой доступ к элементу по индексу. К тому же реализация линейного односвязного списка требует дополнительной памяти для хранения адресной части элементов.
Рассмотрим более подробно, как выполняются основные операции с линейными односвязными списками.
Исходные установки. В начале программы необходимо описать элемент и его тип:
В статической памяти описываем переменную-указатель списка и несколько переменных-указателей, используемых при выполнении операций со списком:
Добавление нового элемента к списку. Добавление элемента к списку включает запрос памяти для размещения элемента и заполнение его информационной части. Построенный таким образом элемент добавляется к уже существующей части списка.
В общем случае при добавлении элемента к списку возможны следующие варианты:
· список пуст, добавляемый элемент станет единственным элементом списка;
· элемент необходимо вставить перед первым элементом списка;
· элемент необходимо вставить перед заданным (не первым) элементом списка;
· элемент необходимо дописать в конец списка.
Добавление элемента к пустому списку состоит из записи адреса элемента в указатель списка, причем в поле «адрес следующего» добавляемого элемента необходимо поместить nil:
На рис. 7.10 показана последовательность операций при добавлении элемента к пустому списку.
Добавление элемента перед первым элементом списка. При выполнении этой операции необходимо в поле «адрес следующего» переписать адрес первого элемента списка, а в указатель списка занести адрес добавляемого элемента (рис. 7.11):
Добавление элемента перед заданным (не первым). Для выполнения операции необходимо знать адреса элементов, между которыми вставляется элемент, так как адресные части этих элементов при выполнении операции будут корректироваться (рис. 7.12). Пусть f - адрес предыдущего элемента, а n - адрес следующего элемента, тогда:
Добавление элемента в конец списка. В этом случае должен быть известен адрес элемента, после которого добавляется новый элемент (рис. 7.13):
Анализ показывает, что этот случай можно свести к предыдущему, так как адресная часть последнего элемента содержит nil:
Комбинируя эти фрагменты, можно организовать построение списка с любой дисциплиной добавления элементов.
Пример 7.2. Разработать программу, которая строит список по типу стека из целых чисел, вводимых с клавиатуры. Количество чисел не известно, но отлично от нуля. Конец ввода - по комбинации клавиш CTRL+Z (конец файла на устройстве ввода).
Обычно построение списка по типу стека выполняется в два этапа: в список заносится первый элемент, а затем организуется цикл добавления элементов перед первым:
Просмотр и обработка элементов списка. Просмотр и обработка элементов списка выполняется последовательно с использованием дополнительного указателя:
В качестве примера рассмотрим вывод на экран элементов списка:
Поиск элемента в списке. Поиск элементов в списке также выполняется последовательно, но при этом, как это и положено в поисковом цикле, обычно организуют выход из цикла, если нужный элемент найден, и осуществляют проверку после цикла, был ли найден элемент:
Удаление элемента из списка. При выполнении операции удаления также возможно четыре случая:
· удаление единственного элемента;
· удаление первого (не единственного) элемента списка;
· удаление элемента, следующего за данным;
· удаление последнего элемента.
Удаление единственного элемента. После удаления единственного элемента список становится пустым, следовательно при выполнении этой операции необходимо не только освободить память, выделенную для размещения элемента, но и занести nil в указатель списка first (рис. 7.14):
Удаление первого (не единственного) элемента списка. Удаление первого элемента состоит из сохранения адреса следующего элемента в рабочей переменной £ освобождения памяти элемента и записи в указатель списка сохраненного адреса следующего элемента (рис. 7.15):
Удаление единственного элемента и первого элемента в программе можно объединить:
Удаление элемента, следующего за данным (не последнего). Удаление элемента, следующего за данным, требует запоминания адреса удаляемого элемента, изменения адресной части данного элемента и освобождения памяти (рис. 7.16).
Удаление последнего элемента. Удаление последнего элемента отличается только тем, что в поле «адрес следующего» заданного элемента записывается константа nil:
Удаление последнего элемента можно свести к удалению элемента, следующего за данным, так как адресная часть удаляемого элемента равна nil.
Комбинируя приемы удаления, мы также можем организовать любую дисциплину удаления.
Пример 7.5. Разработать программу, которая удаляет из списка все элементы меньше заданного значения к.
Удаляемые значения могут располагаться в списке на любом месте, следовательно, возможны все четыре варианта удаления элемента, которые сводятся к двум случаям:
•удаление единственного элемента и удаление записей из начала списка-удаление из начала списка;
• удаление средних и последнего элементов - удаление не из начала списка. Для разделения этих двух случаев введем специальный признак «удаление из начала», который в начале установим равным true, а затем, как голько в списке будет оставлен хотя бы один элемент - изменим на false.
Лекция 11. Интегрированная среда разработки Delphi
1. Исторический аспект развития систем визуального программирования.
2. Общая характеристика системы программирования Delphi.
3. Интегрированная среда разработки Delphi.
3.1. Главное меню.
3.1.1. Структура меню.
3.1.2. “Горячие” клавиши команд меню.
3.2. Палитра компонентов.
3.2.1. Виды компонентов Delphi.
3.2.2. Структура палитры компонентов.
3.3. Редактор формы.
3.3.1. Правила размещения компонентов.
3.3.2. Правила выделения компонентов.
3.3.3. Правила изменения размеров компонентов.
3.3.4. Правила перемещения компонентов.
3.3.5. Контекстное меню редактора форм.
3.4. Инспектор объектов.
3.5. Дерево объектов.
3.6. Редактор кода.
Доп-но: [2, § 2.1, 2.3, 2.5].
Сам-но: [2, § 1.2, 1.5, 2.4, 2.6, 2.7]
1. Исторический аспект развития систем визуального программирования
Переход от ОС DOS к ОС Windows потребовал разработки новых технологий создания ПО – технологий визуального программирования.
Первая система визуального программирования Visual Basic была создана компанией Microsoft для языка программирования Basic. Для решения задач профессионального программирования фирмой Borland (Inprise) были созданы системы программирования Delphi (язык Object Pascal) и С++Builder (язык C++). В настоящее время создано большое количество систем визуального программирования: Embarcadero RAD Studio, Microsoft Visual Studio, Qt Creator, Eclipse, JBuilder, Kylix и др.
Преимущество систем визуального программирования: 1) сокращение времени разработки графического интерфейса и объёма кода ПО путём наглядного конструирования интерфейса, изменения свойств компонент и задания обработчичов событий; 2) наличие библиотек готовых компонент, в том числе для работы с любыми СУБД, Internet; 3) возможность разработки и внедрения пользовательских классов, библиотек, создании кросс-платформенных приложений и др.
2. Общая характеристика системы программирования Delphi
Delphi является системой визуального программирования, которая включает набор инструментов для скоростной разработки приложений (RAD – Rapid Application Development).
Delphi использует язык Object Pascal и поддерживает такие концепции объектно-ориентированного программирования как инкапсуляция, наследование, полиморфизм и управление событиями.
Delphi имеет библиотеку визуальных компонентов (VCL – Visual Component Library), которая включает кнопки, поля редактирования, меню, таблицы, графические объекты, компоненты управления данными, файлами, мультимедиа, диалоги и т.д.
Delphi позволяет разрабатывать приложения для работы с локальными и сетевыми БД, Internet, создавать распределённые, кросс-пратформенные приложения и др.
3. Интегрированная среда разработки Delphi
Структура интегрированной среды разработки (IDE – Integrated Development Environment) Delphi:
1. Главное меню (System Menu) и панель с кнопками быстрого доступа (Speed Bar).
2. Палитра компонентов (Component Palette).
3. Редактор (конструктор) форм (Form Designer).
4. Редактор кода (Editor Window).
5. Инспектор объектов (Object Inspector).
6. Дерево объектов (Object TreeView).
3.1.1. Структура Главного меню.
File (файл):
New Application – создать новый проект (приложение).
New Form – создать новую форму (при этом создается и текстовый модуль).
New Unit – создать новый модуль с текстом программы.
Open – открыть файл. Если модуль описывает форму, то эта форма тоже появится на экране.
Open Project – открыть ранее созданный проект.
Reopen – переоткрыть ранее созданный проект из списка последних открытых файлов.
Save – сохранить модуль.
Save As – сохранить модуль как.
Save Project As – сохранить проект как.
Save All – сохранить все.
Close All – закрыть проект.
Use Unit – связать активный модуль с другим модулем проекта.
Edit (редактирование) – операции с буфером обмена, средства для изменения размеров, порядка создания, выравнивания размещенных компонентов на форме.
Search (поиск) – контекстный поиск и замена.
View (просмотр) – вывод на экран различных окон проекта.
Project – работа с проектом.
Run – исполнение и отладка программы.
Component – создание и установка новых компонентов.
Database – мастер создания баз данных.
Tools – инструменты, опции проекта, конфигурация.
Help – помощь.
3.1.2. “Горячие” клавиши команд меню.
F1 – помощь (в т. ч. и контекстная).
Ctrl+S – сохранить текущий файл модуля.
Shift+Ctrl+S – сохранить всё.
Ctrl+F11 – открыть файл проекта (Shift+F11 – добавить файл в проект).
F11 – переключение между инспектором объектов и формой/файлом модуля.
F12 – переключение между формой и соответствующим ей файлом модуля.
Ctrl+F12 – просмотреть список файлов модулей проекта.
Shift+F12 – просмотреть список форм проекта.
Ctrl+F9 – компилировать и скомпоновать приложение.
F9 –создать и запустить приложение.
F4 –выполнение программы до местоположения курсора.
F7 –пошаговое выполнение подпрограммы с заходом в функции.
F8 –пошаговое выполнение подпрограммы без захода в функции.
Ctrl+F2 – прервать выполнение программы.
Ctrl+F5 – добавить переменную в окно просмотра.
Ctrl+F7 – редактировать значение переменных.
3.2. Палитра компонентов.
Системы визуального программирования изначально включают наиболее часто используемые компоненты: формы, меню, метки, поля редактирования, кнопки, переключатели и т.д.
Назначение палитры компонентов Delphi: отображает библиотеку визуальных компонентов VCL, пиктограммы которых скомпонованы по разделам.
Палитра компонетов является полностью настраиваемой: возможно добавлять/удалять/переименовывать закладки, перегруппировывать компоненты и др.
3.2.1. Виды компонентов Delphi.
Все компоненты можно разделить на:
1. визуальные – видимые в ходе выполнения приложения (меню, кнопки); отображаются на экране точно таком же виде, как и при разработке в период проектирования.
2. невизуальные – выполняющие те или иные служебные функции (таймеры, буферы, диалоги); при проектировании отображаются на форме в виде пиктограмм, во время работы приложения не видны.
3.2.2. Структура палитры компонентов (основные компоненты).
Standard – стандартная, содержит наиболее часто используемые компоненты: MainMenu – главное меню, PopupMenu – выпадающее (контекстное) меню, Label – текстовая метка, Edit – однострочное поле редактирования, Memo – простой текстовый редактор, Button – кнопка, CheckBox, RadioButton – переключатели, ListBox – список строк, ScrollBar – полоса прокрутки, Panel – панель и др.
Additional – дополнительная (BitBtn, SpeedButton – дополнительные кнопки, MaskEdit – поля редактирования по шаблону, StringGrid, DrawGrid – таблицы, Image – рисунок, Shape – графические фигуры, Bevel, Splitter – разделители).
Win32 – различного рода элементы управления Windows (PageControl – многостраничное окно, ImageList – список рисунков, RichEdit – улучшенный текстовый редактор, TrackBar – дискретное изменение значения величины, ProgressBar – полоса визуализации прогресса процесса, UpDown – увеличение и уменьшение величины, TreeView – просмотр дерева, StatusBar – полоса состояния, ToolBar – панель инструментов).
Dialogs – системные диалоги (OpenDialog, SaveDialog, FontDialog, ColorDialog, PrintDialog, FindDialog, ReplaceDialog).
System – системная палитра (Timer, OleContainer).
Internet – компоненты для работы с интернет.
Data Access, Data Control, QReport– доступ и управление базами данных, создание отчетов и запросов.
Win 3.1 – компоненты в стиле Win 3.1, оставлены для совместимости.
Samples – примеры.
ActiveX – примеры активных компонентов.
3.3. Редактор формы.
Основным объектом любой программы под Windows является форма – типичное окно Windows. Форма имеет те же свойства, что и другие окна Windows.
Особенности создания графического интерфейса в ИСР: 1) В процессе проектирования результат виден немедленно, без компиляции программы; при этом ИСР внедряет компоненты в форму, то есть автоматически генерирует программный код, описывающий компонент. 2) Описания объектов помещаются в отдельные модули (*.dfm), которые можно редактировать при помощи Редактора кода. 3) Для каждой формы Delphi создает отдельный текстовый модуль, автоматически связывая его с файлом описания класса формы (*.pas).
3.3.1. Правила размещения компонентов.
1. Для помещения компонента на форму необходимо выбрать компонент из Палитры компонентов + ЩЛКМ в том месте, где он должен появиться на форме (при этом левый верхний угол компонента будет привязан к координатам курсора мыши в момент щелчка).
2. Двойной ЩЛКМ на компоненте Палитры приводит к его размещению в центре Редактора формы.
3. Для размещения на форме нескольких копий компонента необходимо при выборе компонента мышью держать нажатой клавишу Shift. Для выхода из этого режима необходимо нажать кнопку со стрелкой в Палитре компонентов.
Редактор форм содержит специальную сетку, которая отображается на экране в виде точек (размер ячеек по умолчанию составляет 8 на 8 пикселей). Компоненты, при помощи мыши помещаемые с Палитры компонентов на форму, привязываются к ближайшей точке сетке, что позволяет выравнивать их по левому, правому, верхнему и нижнему краям.
Параметры сетки можно изменить через вкладку Designer окна Environment Options меню Tools. Здесь же можно выключить режим привязки (Snap to Grid), а также режим отображения сетки (Display Grid).
3.3.2. Правила выделения компонентов.
1. Для выделения отдельного компонента необходимо в Редакторе формы ЩЛКМ на нем (или выбрать из списка в Инспекторе объектов или Дереве объектов).
2. Для выделения группы компонентов можно использовать:
§ Сочетание Shift+ЩЛКМ на Редакторе формы (действует как переключатель).
§ При помощи мыши заключить компоненты в рамку (в сочетании с Shift позволяет выделить группы компонентов, размещенные на разных участках формы). При размещении одних компонентов внутри других (например кнопок на панели) необходимо использовать клавишу Ctrl.
§ Пункт меню Edit®Select All выделяет все компоненты.
§ Сочетание Ctrl+ЩЛКМ в Дереве объектов (действует как переключатель).
Активный компонент окружен черными маркерами; группа активных компонентов – серыми маркерами.
3.3.3. Правила изменения размеров компонентов.
Помещаемые на форму компоненты имеют стандартные размеры (например, Button имеет размер 75х25 пикселей, Image – 105x105).
Изменить размер компонента (или группы компонентов) можно:
1. При помощи мыши. После размещения компонента необходимо захватить один из маркеров и протягиванием установить нужный размер. В процессе размещения компонента необходимо ЩЛКМ в том месте, где должен находиться левый верхний угол компонента и протягиванием установить нужный размер.
2. При помощи клавиатуры. Сочетание Shift+стрелки изменяет размеры одного или группы компонентов на 1 пиксель.
3. Через Инспектор объектов, изменяя значения соответствующих свойств (Width – ширина, Height – высота).
4. Через контекстное меню Редактора форм (ЩПКМ®Position®Size или Scale).
5. Программным путём.
3.3.4. Правила перемещения компонентов.
Изменить местоположение компонента (или группы компонентов) можно:
1. При помощи мыши, захватив выделенный компонент/компонеты и перетягивая по Редактору формы.
2. При помощи клавиатуры. Сочетание Ctrl+стрелки изменяет положение выделенного элемента на 1 пиксель. При этом выключается привязка компонента к сетке.
3. Через Инспектор объектов, изменяя значения соответствующих свойств (Left – положение слева относительно левой верхней точки формы, Top – положение справа).
4. Через контекстное меню Редактора форм (ЩПКМ®Position®Aling) или с помощью Палитры выравнивания (View®Alignment Palette).
5. Программным путём.
Для защиты компонентов от перемещения и изменения размеров необходимо использовать пункт меню Edit®Lock Controls.
3.3.5. Контекстное меню редактора форм.
Align To Grid – привязка выделенных компонентов к сетке Редактора форм.
Bring To Front – перемещение выделенных компонентов на передний план.
Send To Back – перемещение выделенных компонентов на задний план.
Revert To Inherited – возвращение к первоначальному виду формы, выбранной из репозитория.
Align– отображение диалогового окна “Выравнивание” (компоненты можно выровнять по левой стороне, по верху, по центру, распределить по вертикали и горизонтали).
Size – отображение диалогового окна “Размер” (увеличить до максимального, уменьшить до минимального, указать размер в пикселях).
Scale – отображение диалогового окна “Масштаб”.
Tab Order – отображение диалогового окна, позволяющего изменить порядок переключения клавишей Tab по элементам интерфейса.
Creation Order – отображение диалогового окна “Порядок создания” невизуальных компонентов.
Add To Repository – помещение формы в репозиторий объектов для их последующего использования.
View as Text – отображение в редакторе кода описания формы в текстовом виде.
3.4. Инспектор объектов.
Инспектор объектов является отдельным окном и предназначен для:
1. Изменения свойств объектов (закладка Properties) и создания обработчиков событий (закладка Events), на которые реагирует объект (форма или любой визуальный/невизуальный компонент).
2. Выбора активного компонента, свойства которого необходимо изменить.
Для изменения свойств компонента его нужно выделить и ввести новое значение свойства (например, можно изменить координаты и размер компонента изменяя свойства Left, Top, Height, и Width).
Для создания обработчика события нужно дважды ЩЛКМ по правую сторону нужного события; соответствующий данному событию код автоматически запишется в Редактор кода и текстовый курсор будет установлен в точку ввода обработчика данного события.
Информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Возможна группировка списка свойств и событий по имени и по категориям и прочие настройки.
3.5. Дерево объектов.
Дерево объектов отображает дерево всех визуальных и невизуальных компонентов, помещенных на Редактор формы, а также различные виды связей между ними: соотношение родительских и дочерних компонентов, связь компонентов через их свойства и др.
Дерево объектов может использоваться для выделения компонентов, поиска “пропавших” компонентов, переноса компонентов в другой родительский контейнер, операций с объектами через “буфер обмена” и др.
3.6. Редактор кода.
Редактор кода прежде всего служит для написания текста программы, отображая содержимое соответствующих модулей и других файлов.
Окно Редактор кода имеет две страницы: Code (код) и Diagram (диаграммы), а также изначально содержит окно Исследователя кода (Code Explorer) и окно Сообщений компилятора (Message View).
Страница Code является полноценным текстовым редактором, поддерживающем вызов контекстной справки, работу с текстовыми блоками, контекстный поиск и замену, настраиваемые комбинации клавиш, цветовое выделение строк, создание закладок и др.
Страница Diagram позволяет строить диаграммы, иллюстрирующие взаимоотношения компонентов в приложении.
Строка состояния Редактора кода содержит положение текстового курсора в модуле, флаг модификации кода, флаг режима вставки/замены.
Исследователь кода показывает дерево всех типов, классов, свойств, методов, глобальных переменных, констант, процедур и функций, содержащихся в модуле, открытом в Редакторе кода, служит для навигации по модулю.
В окно Сообщений компилятора выводится список сообщений компилятора о замечаниях (Warning) и ошибках (Error).
Лекция 12. Структура проекта Delphi
1. Структура главного файла проекта.
2. Структура файла модуля.
3. Области видимости и время жизни.
4. Файлы проекта Delphi.
Доп-но: [2, § 1.7, 2.3.1].
Сам-но: [2, § 14.3, 14.4]
1. Структура главного файла проекта
В главном файле проекта Delphi хранится информация о формах и модулях, с него начинается выполнение программы, он создается и модифицируется Delphi автоматически в процессе разработки приложения.
Имя главного файла проекта (по умолчанию Project1.dpr) присваивается имени исполняемого файла. Для просмотра текста файла проекта, необходимо выполнить команду View®Units и выбрать нужный модуль.
program Project1; // Обязательный заголовок – имя программы
uses // Модули, загружаемые программой
Forms, // Системный модуль, существенный для Менеджера Проектов => нельзя удалять
Unit1 in 'Unit1.pas' {Form1}, // Модуль формы, комментарий {Form1} существенен
Unit2 in 'Unit2.pas' ; // Модуль приложения
{$R *.RES} // Директива компилятора, связывающая с модулем файл ресурсов проекта
{ Здесь можно поместить объявления локальных типов, классов, констант, переменных, функций, процедур }
Begin
Application.Initialize; // Инициализация приложения
Application.CreateForm(TForm1, Form1); // Создание формы Form1
Application.Run; // Запуск приложения на выполнение
end.
2. Структура файла модуля
Информация о формах Delphi хранится в двух файлах: файле формы (*.dfm) и текстовом файле модуля (*.pas), который отображается в окне Редактора кода. Имена этих файлов одинаковы (по умолчанию – Unit1, Unit2 и т.д.).
Каждый модуль в общем случае имеет структуру:
unit <имя модуля>;
interface // Открытый (внешний) интерфейс модуля
{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым будет доступ их других модулей }
implementation // Реализация модуля
{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым не будет доступа из других модулей. Тут необходимо реализовать все объявленные в разделе interface (или дополнительные, не объявленные) функции и процедуры }
initialization // Не обязательный раздел
{ Здесь помещаются операторы, выполняемые один раз при первом обращении к модулю }
finalization // Не обязательный раздел. Использование не разрешается, если нет initialization
{ Здесь помещаются операторы, выполняемые один раз при любом завершении работы модуля }
end.
Текст модуля с пустой формой по умолчанию имеет такую структуру:
unit Unit1; // Имя модуля
interface // Раздел описаний
uses // Подключаемые модули
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type // Описание класса (типа) формы
TForm1 = class(TForm) // Класс TForm1 наследует базовый класс TForm
private// Закрытый раздел класса
{ Private declarations }
{ Здесь можно поместить объявления переменных, функций, процедур, включаемых в класс формы, но не доступных для других модулей }
public // Открытый раздел класса
{ Public declarations }
{ Здесь можно поместить объявления переменных, функций, процедур, включаемых в класс формы и доступных для других модулей }
end;
Var
Form1: TForm1; // Объявление переменной Form1 (экземпляра формы) типа TForm1
implementation // Раздел реализации модуля
{$R *.DFM} // Директива компилятора, связывающая с модулем файл формы
{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым не будет доступа из других модулей. Тут необходимо реализовать все объявленные в разделе interface (или дополнительные, не объявленные) функции и процедуры }
end.
Когда мы помещаем компонент на форму, Delphi автоматически создает переменную для него и помещает объявление в раздел interface после описания класса формы. Для образования имени переменной используется свойство Name компонента.
Button1: TButton; // Объявление переменной (экземпляра) Button1 типа TButton
При создании обработчика нажатия на кнопку генерируется код:
procedure Button1Click(Sender: TObject); // Объявление обработчика, раздел interface
procedure TForm1.Button1Click(Sender: TObject); // Реализация обработчика, раздел implementation
Begin
end;
3. Области видимости и время жизни
Такие элементы программы, как константы, переменные, функции и процедуры могут использоваться только в пределах области их видимости и имеют определённое время жизни.
Область видимости (область действия) элемента– область программы, в которой на данный элемент можно сослаться; определяется местом объявления элемента.
Время жизни элемента – период времени, в течении которого элемент существует в памяти (от момента создания до уничтожения).
Глобальные элементы– объявляются вне тела любой функции, процедуры, некоторого блока “begin <операторы> end;” в разделе interface. Они находятся в памяти от начала до конца работы программы и доступны для любой функции, процедуры данного модуля или модулей, использующих данный модуль.
Локальные элементы– объявляются внутри тела любой функции, процедуры, некоторого блока, в разделе implementation. Они видимы только в данной функции, процедуре, блоке данного модуля и имеют время жизни, равное времени работы этой функции, процедуры, блока.
4. Файлы проекта Delphi
Любой проект Delphi как минимум включает следующие файлы:
1.Project1.dpr – главный файл проекта. Содержит информацию о формах и модулях проекта, операторы инициализации и запуска программы на выполнение.
2.Unit1.pas – файл модуля. Содержит исходный текст модуля с описанием класса формы.
3.Unit1.dfm – файл формы. Текстовый (или двоичный) файл с описанием настроек формы и компонентов на ней. Каждому файлу формы соответствует определённый файл модуля.
4.Project1.dof – файл параметров проекта. Текстовый файл для сохранения установок параметров проекта (директив компилятора и др.).
5. Project1.res – файл ресурсов проекта. Двоичный файл, содержащий иконки, курсоры и др.
6.Project1.dsk – файл конфигурации окон проекта. Текстовый файл для хранения информации о последнем сеансе работы с проектом (открытых окнах, их размерах и положении).
Три последних файла относятся к управлению проектом и напрямую программистом не используются. Если сохранить проект под другим именем, то изменят название и файлы с расширением res, dof и dsk.
7. *.~dpr, *.~pas, *.~dfm – файлы резервных копий проекта.
8. Project1.exe – исполняемый файл проекта. Является автономным исполняемым файлом.
9. Unit1.dcu – объектный файл модуля. Откомпилированный файл модуля (*.pas), который компонуется в окончательный исполняемый файл.
Наиболее важными файлами являются файлы с расширениями *.dpr, *.pas, *.dfm, *.dof, *.res. Как минимум, именно эти файлы необходимо перенести на другой компьютер, если необходимо продолжить работу с проектом.
Лекция 13. Управление проектом Delphi
1. Меню File.
2. Меню Edit.
3. Меню Search.
4. Меню View.
5. Меню Project и Run.
6. Меню Project | Options.
6.1. Страница Forms.
6.2. Страница Applications.
6.3. Страница Compiler.
6.4. Страница Linker.
6.5. Страница Directories / Conditionals.
6.7. Страница Packages.
7. Меню Tools | Environment Options.
7.1. Страница Preferences.
7.2. Страница Designer.
7.3. Страница Palette.
8. Меню Tools | Editor Options.
8.1. Страница Display.
8.2. Страница Code Insight.
Доп-но: [2, § 2.9].
Сам-но: [2, § 16.1, 16.2].
1. Меню File
New – создать новый объект (проект, форму, фрейм, модуль данных и т.п.).
Open – открыть существующий модуль или проект. Если модуль описывает форму, то эта форма тоже появится на экране.
Open Project – открыть существующий проект или группу.
Reopen – открыть ранее созданный проект из списка последних открытых файлов.
Save As, Save Project As– сохранить модуль или проект под новым именем.
Save All – сохранить текущий проект и все его файлы.
Close – закрыть текущий модуль.
Close All – закрыть проект (это необходимо делать, если включена опция Tools → Environment Options → Preferences → AutoSave Options → Desktop).
Use Unit – связать активный модуль с другим модулем проекта (путем формирования оператора uses).
Exit– выйти из IDE Delphi. Если проект не сохранён, Delphi предложит его сохранить.
2. Меню Edit
Undo – отменить операцию при работе в текстовом редакторе.
Redo – повторить операцию при работе в текстовом редакторе.
Опция Tools → Editor Options → General → Undo After Save – позволяет использовать команду Undo после сохранения.
Cut, Copy, Paste, Delete, Select All– команды применяются как к тексту, так и к визуальным компонентам, расположенным на редакторе форм.
Align To Grid – привязка выделенных компонентов к сетке Редактора форм.
Bring To Front – перемещение выделенных компонентов на передний план.
Send To Back – перемещение выделенных компонентов на задний план.
Align– отображение диалогового окна “Выравнивание” (компоненты можно выровнять по левой стороне, по верху, по центру, распределить по вертикали и горизонтали).
Size – отображение диалогового окна “Размер” (увеличить до максимального, уменьшить до минимального, указать размер в пикселях).
Scale – отображение диалогового окна “Масштаб”.
Tab Order – отображение диалогового окна, позволяющего изменить последовательность смены активных компонентов на форме при нажатии клавиши Tab.
Creation Order – отображение диалогового окна “Порядок создания” невизуальных компонентов.
Flip Children– зеркальное отображение размещения компонентов.
Lock Controls – зафиксировать компоненты (защитить от перемещения и изменения размеров).
3. Меню Search
Find (Ctrl+F) – поиск текста.
Search Again(F3) – повторный поиск с заданными ранее параметрами.
Text to find – определяет строку текста поиска.
Опции:
Case Sensitive – чувствительность к регистру символов.
Wholes words only – поиск слов целиком.
Regular expressions – многократный поиск.
Scope – область поиска (Global – весь текст, Selected Text – выделенный текст).
Directions – направление (Forward – вперед, Backwards – назад).
Find in Files – поиск в файлах.
Replace (Ctrl+R) – поиск и замена текста.
Text to find – определяет текст поиска.
Replace with – текст для замены.
Prompt on Replace – спрашивать при замене.
Replace All – заменить все.
Incremental Searsh – быстрый поиск по вводимым символам.
Find Error – позволяет отследить ошибку времени выполнения программы. Для этого необходимо ввести адрес ошибки и Delphi перейдет в то место программы, где произошла ошибка.
4. Меню View
Project Manager – вызов менеджера проекта, позволяющего переходить между файлами проекта, а также добавлять и удалять файлы проекта.
Object Inspector – активизация Инспектора объектов.
Object TreeView – активизация Дерева объектов.
To-Do List – показать список пралнируемых задач проектирования.
Alignment Palette – палитра выравнивания.
Browser – средство для просмотра иерархии объектов программы, поиска идентификатора в исходных текстах и т.п.
Code Explorer– показать окно исследователя кода.
Component List – показать список компонентов (альтернатива Палитры компонентов). Используется для поиска компонента по имени.
Window List (Alt+0) – показать список открытых окон.
Debug Windows– впомогательное меню отладки программы:
Breakpoint – вызов списка точек останова программы. Точка останова (полоса красного цвета) вводится при нажатии F5 или щелчку мышью слева строки кода в редакторе.
Call Stack – вызов стека вызовов подпрограмм и т.д.
Toggle Form/Unit(F12) – переключение между формой и соответствующим модулем, выбор модуля или формы из списка.
Units – показать список модулей проекта.
Forms – показать список форм проекта.