Лабораторная работа №9. Работа с файлами и каталогами

Цель работы: Познакомиться с основными приёмами работы с каталогами и файлами в системе Delphi.

Основные понятия: При организации многих приложений требуется работа с файлами и ката­логами (папками). В модулях System и SysUtils находятся многочисленные процедуры, функции, типы и константы, предназначенные для работы с файловой системой.

Модуль System реализует средства вво­да/вывода, обработки строк, операций с числами и динамической памятью и ряд других.

Модуль SysUtils расширяет и дополняет возможности модуля System. В нём находятся средства, предназначенные для работы с дисками, катало­гами и файлами, датой, временем, строками и другие процедуры и функции.

Для работы с файловой системой предназначены четыре специальных ком­понента (FileListBox, DirectoryListBox, DriveComboBox, FilterComboBox), расположенные на вкладке Win3.1 Палитры компонентов.

С помощью этих компонентов можно программировать операции, связан­ные с навигацией по файловой системе. Обычно они используются совместно, но при необ­ходимости их можно применять по отдельности. На рис. 1 показаны связи между вышеперечисленными компонентами, а также Label и Edit, при их совместном использовании.

Рисунок 1 – Связи между компонентами для работы с файлами и каталогами

Компонент DriveComboBox используется для выбора дисковода. Он представляет собой комбинированный список, содержащий все уста­новленные в системе дисковые накопители. Выбранное устройство отображается в поле компонента, а соответствующая выбранному дисководу буква содержится в свойстве Drive. Аналогичное свойство имеется у компонентов DirectoryListBox и FileListBox.

НЕ нашли? Не то? Что вы ищете?

Компонент DirectoryListBox служит для просмотра и перемещения по дереву каталогов. Он представляет собой прямоугольную область, в кото­рой отображается дерево каталогов с выбранным текущим каталогом.

Свойство Directory содержит строку, указывающую текущий каталог.

Для отображения текущего каталога с компонентом DirectoryListBox может быть связана надпись Label, в которой автоматически отображает каталог. При этом на длину накладывается ограничение – не более 24 символов. Если название текущего каталога имеет длину боль­ше, чем 24 символа, то часть названий каталогов заменяется многоточием.

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

Просматриваемый каталог задаётся свойством Directory.

Для автоматического отображения выбранного в списке файла можно ис­пользовать компонент Edit, который должен быть связан с компонентом FileListBox. Первоначально, когда выбранных файлов нет, в поле Edit отобража­ется выбранная маска, например, *. *.

При выборе пользователем файла в свойство FileName заносится полное имя выбранного файла. Это свойство доступно для чтения и записи, поэтому можно программно выбрать требуемый файл.

Управлять отображением файлов в списке можно с помощью свойств FileType и Mask. Свойство FileType указывает атрибуты файлов, содержащихся в списке, и принимает комбинации следующих зна­чений:

∙  ftReadOnly (только чтение);

∙  ftHidden (скрытый);

∙  ftSystem (системный);

∙  ftVolumeID (метка диска);

∙  ftDirectory (каталог);

∙  ftArchive (архивный);

∙  ftNormal (обычный).

Свойство Mask содержит маску для файлов списка. По умолча­нию используется маска *.*, и в списке отображаются все файлы. При необходимости для маски можно задать другое зна­чение.

Файлы в списке могут выводиться со значками или без них, наличие или отсутствие значка задаётся свойством ShowGlyphs.

Компонент FilterComboBox осуществляет выбор маски для списка файлов. Этот компонент представляет собой комбинирован­ный список, который содержит фильтры. Фильтр состоит из текстового описания и маски. Доступ к фильтру осуществляется, через свойство Filter.

При совместном использовании компонентов FilterComboBox и FileListBox для организации связи между ними используется свойство FileList. После установки связи между этими компонентами в случае смены в компоненте FilterComboBox фильтра, а вместе с ним и маски, спи­сок файлов в компоненте FileListBox автоматически обновляется с учётом новой маски.

Работу с файлами соответствующих форматов поддерживают также такие компоненты как Memo, ListBox, Picture и Clipboard.

Работа с файлами. При работе с текстовыми файлами можно использовать объект типа TStrings, который имеет ряд методов, например:

∙  Clear – очистка содержимого объекта;

∙  LoadFromFile – загрузить файл, имеет параметр – полное имя файла;

∙  SaveToFile – сохранить в файл, имеет параметр – полное имя файла.

Порядок выполнения работы

1. Запустите Delphi. Создайте новый проект.

2. Назовите форму MainForm с заголовком Главная. Для формы задайте:

·  размер – 600х600;

·  минимальный размер – 200х200;

·  максимальный размер – 900х900.

3. Cохраните проект в папку D:\Users\...\Lab9\... .

4. На форме Главная создайте:

·  панель высотой 50, сделайте, чтобы она выравнивалась по верхнему краю, измените её цвет;

·  разделитель высотой 10, сделайте, чтобы он выравнивался по верхнему краю;

·  панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю, измените её цвет;

·  разделитель высотой 10, сделайте, чтобы он выравнивался по нижнему краю;

·  многострочный редактор, назовите его MMemo, сделайте, чтобы он занимал всю оставшуюся фору;

·  главное меню с пунктами Файл, О программе и Выход;

·  в меню Файл пункты Сохранить и Загрузить;

·  на первой панели надпись Информация, измените размер шрифта;

·  на второй панели кнопку с заголовком Очистить. Назовите её clBut. Сделайте, что бы по её нажатию удалялось содержимое многострочного редактора;

5. Сделайте так, чтобы при выборе меню Выход приложение закрывалось.

6. Создайте вторую форму:

·  назовите SaveForm с заголовком Сохранение файла;

·  сделайте форму размером 400х600.

7. На форме Сохранение файла создайте:

·  панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю;

·  разделитель высотой 10, сделайте, чтобы он выравнивался по нижнему краю;

·  вторую панель, сделайте, чтобы она занимала всю оставшуюся фору.

8. На форме Сохранение файла на второй панели создайте:

·  надпись Устройство, рядом с ней компонент выбора дисковода;

·  надпись Путь, рядом с ней компонент для просмотра и перемещению по дереву каталога, высотой 120;

·  надпись, свяжите её с компонентом для просмотра и перемещению по дереву каталога. Под ней компонент для просмотра списка файлов заданного каталога и выбора имени файла, высотой 150. Сделайте, чтобы файлы выводился со значками;

·  надпись Тип файла, рядом с ней компонент для выбора маски для списка файлов. В нём создайте фильтр для выбора текстовых файлов (с расширением txt);

·  надпись Имя файла, рядом с ней однострочный редактор, назовите его FNEdit. Сделайте, что бы в нём отображалось имя выбранного файла;

·  организуйте связи между компонентами.

9. Сделаем, чтобы изначально в устройствах был выбран папка Users на диске D. Для этого в процедуру OnShow для формы введите код:

DriveComboBox1.Drive := 'd';

DirectoryListBox1.Directory := 'd:\Users';

10. На форме Сохранение файла на второй панели создайте кнопки Сохранить и Отмена.

11. Запрограммируем кнопку Сохранить, что бы при нажатии на неё данные из редактор на форме Главная сохранялись в указный файл. Для этого в процедуру обработки для кнопки введите код:

MainForm. MMemo. Lines. SaveToFile (Label3.Caption + '\' +

FNEdit. Text);

12. При нажатии кнопки Отмена окно должно закрываться без каких-либо изменений.

13. Создайте третью форму:

·  назовите LoadForm с заголовком Загрузка файла;

·  сделайте форму размером 400х600.

14. По аналогии с формой Сохранение файла создайте форму Загрузка файла, только вместо кнопки Сохранить создайте кнопку Загрузить, при нажатии которой выбранный файл загружался в редактор на форме Главная.

15. Создайте четвёртую форму:

·  назовите форму AboutForm с заголовком О программе;

·  сделайте форму размером 400х300;

·  измените цвет формы.

16. На форме О программе создайте:

·  фигуру (компонент Shape) в виде прямоугольника с закругленными краями, размером 320х220, измените тип линии и её цвет;

·  поверх фигуры надпись, содержащую своё Ф. И.О., группу, № лабораторной работы, год. Измените размер, цвет и шрифт надписи;

·  кнопку Ok. Запрограммируйте, чтобы при нажатии кнопки форма закрывалась.

17. Запрограммируйте соответствующие пункты главного меню, чтобы при их выборе открывались соответствующие формы.

18. Сохраните и запустите проект на выполнение.

19. Закройте Delphi.