Работа с файлами как с целыми объектами

Важным, но не очевидным оператором является оператор очистки свойства FileName объекта CD1. Это свойство не очищается при вызове объекта.

Результатом подготовки, показанной на рис. 4.21, будет вызов окна "Open file", связанного с корневым каталогом диска с и имеющего параметры:

· заголовок "Заголовок окна",

· список фильтров имен файлов, включающий описания
"Рисунки (*.bmp;*.jpg) " и "Тексты (*.txt) ",

· выбранный фильтр "Тексты (*.txt)".

Private Sub Com1_Click() 'подготовка вызова объекта CD1.DialogTitle = "Заголовок окна" CD1.InitDir = "c:\": 'Начальный путь к папке или файлу 'описание масок имен файлов и выбор маски по умолчанию CD1.Filter = "Рисунки (*.bmp;*.jpg)|*.bmp;*.jpg|Тексты (*.txt)|*.txt" CD1.FilterIndex = 2 'выбор маски CD1.filename = "" 'очистка свойства 'получение данных CD1.ShowOpen 'вызов окна Common Dialog для выбора файла SpecFile = CD1.filename 'чтение спецификации файла TBS.Text = CD1.filename 'отображение спецификации в текстовом окне TBS End Sub
Рис. 4.21. Текст программы для работы с объектом Common Dialog

Получение данных из объекта заключается в чтении свойства FileName. Если файл выбран, то свойство содержит спецификацию файла, если файл не выбран или нажата кнопка "Отмена", то свойство возвращает пустую строку. Никаких действий кроме записи спецификации файла в переменную SpecFile программа не выполняет.

Для определения файла или папки следует применять комплекс окон DriveListBox, DirListBox и FileListBox или одно окно CommonDialog. В первом случае искомая информация находится в свойствах Drive, Path, FileName указанных объектов. При вызове комплекса объектов на экран следует задать свойства Drive и Path. Согласование работы объектов выполняется изменением свойств Path методами Change объектов DriveListBox и DirListBox. Имя файла можно прочитать в обработчике Click объекта FileListBox. Во втором случае вызов CommonDialog выполняется командной кнопкой, в обработчике Click которой следует поставить команду ShowOpen или ShowSave. Предварительно следует определить свойство InitDir и очистить свойство Filename, которое заполняется спецификацией файла при его выборе или остается пустым при отказе от выбора.

 

Операции с файлами как с целыми объектами (табл. 4-11) предусматривают: изменение текущего диска, создание каталога, изменение текущего каталога, переименование каталога, удаление каталога, копирование файла, переименование файла, удаление файла, запуск файла на исполнение. Употребление команд для знакомых с приемами работы в среде MS DOS не представляет особых трудностей. Пояснений требует только функция Shell. Кроме запуска файла на исполнение функция возвращает указанной в команде переменной номер запущенной задачи. Если внешняя программа не запущена, то генерируется ошибка.

Таблица 4-11

Команды управления файлами

Операция Формат команды
Копирование файла FileCopy источник приемник
Удаление файла Kill имя_файла
Переименование файла или каталога Name старое_имя AS новое_имя
Создание каталога MkDir путь\имя_каталога
Изменение текущего диска ChDrive имя_диска
Изменение текущего каталога ChDir путь\имя_каталога
Удаление каталога RmDir путь\имя_каталога
Запуск файла на исполнение Имя_переменной=Shell (имя_файла[,стиль окна])

В табл. 4.11 приняты следующие обозначения:

· источник – спецификация копируемого файла или каталога;

· приемник – спецификация копии файла или каталога;

· имя_файла – спецификация файла;

· старое_имя – спецификация переименовываемого каталога или файла;

· новое_имя – спецификация переименованного каталога или файла.

Параметр стиль_окна имеет значения:

1 – окно является текущим и имеет оригинальный размер и положение;

2 – окно является выделенным и свернуто до иконки;

3 – полноэкранное текущее окно.

Кроме перечисленных команд и операций существуют и другие, позволяющие выполнять менее важные операции.

Для применения команд работы с файлами и каталогами целесообразно создать соответствующее диалоговое окно, оснащенное средствами работы с дисками, каталогами и файлами. В него следует поместить набор клавишей (Command Button). Вызов команд следует поместить в соответствующие обработчики событий указанных объектов.