Работа с файлами
Основные вопросы лекции:
- Организация диалогов.
- Специфика работы с файловым типом данных.
- Работа с файлами на уровне операционной системы.
Организация диалогов
Для работы с файлом сначала необходимо указать его размещение на внешнем носителе информации. При этом можно использовать компоненты OpenDialog и
SaveDialog на вкладке Dialogs.
Рассмотрим компонент OpenDialog. Он относится к числу не визуальных компонентов, т.е. его можно помещать в любое место формы.
Основные свойства компонента:
FileName – имя файла, который был выбран в диалоге.
Filter – список расширений файлов и их наименований (например все файлы (*.*)). Для редактирования списка двойной клик в поле значения свойства компонента. В столбце Filter Name указывается название группы, а в столбце Filter – перечисляются через точку с запятой нужные маски файлов (Например: Рисунки - *.bmp; *.jpg).
FilterIndex – номер фильтра из списка Filter, который будет открыт при вызове окна по умолчанию.
InitialDir – имя каталога, который будет открыт при вызове окна.
Title – заголовок окна при вызове диалога открытия файла.
Для вызова диалогового окна открытия файла можно использовать логический метод Execute, который возвращает true, если пользователь произвел выбор в диалоге.
Имя выбранного пользователем файла помещается в свойство FileName.
Свойство Title определяет заголовок диалогового окна. Свойство DefaultExt определяет заданное по умолчанию расширение файла.
Основной метод Execute – возвращает значение True – если файл был выбран и False – если нажата кнопка Отмена.
Пример: Создать в текстовом редакторе текстовый файл MyText.txt. С помощью диалогового окна OpenDialog открыть этот файл. Имя файла поместить в компонент Label. Все действия должны происходить при нажатии на форме кнопки «Открыть».
Действия:
Размещаем на форме компоненты: OpenDialog1 (вкладка Dialogs), Label и Button (вкладка Standard). Кнопку называем «Открыть». Процедура обработки кнопки будет иметь вид
procedure TForm1.Button1Click(Sender: TObject);
var S:String;
Begin
if OpenDialog1.Execute then S:= OpenDialog1.FileName else S:=’Выбор не произведен’;
Label1.Caption:=S;
end;
Специфика работы с файловым типом данных
Как и в Pascal в языке Object Pascal файлы делятся на три типа:
- текстовые (F:TextFile;) состоит из последовательностей символов, разбитых на строки
- типизированные (F:file of тип;) двоичные файлы, содержащие последовательности однотипных данных
- не типизированные (F:file;) двоичные файлы, которые могут содержать самые различные данные в виде последовательности байтов
Будем рассматривать только два первых вида файлов (текстовые и типизированные).
Перечислим основные процедуры и функции работы с этими видами файлов:
AssignFile (var F; FileName: string); - осуществляет связь файловой переменной с файлом, хранящимся на внешнем носителе
Reset (var F: File); - открывает существующий файл для чтения
Rewrite (var F: File); - создает и открывает новый файл для записи в него информации (если файл уже существовал на диске, то он уничтожается)
Append (F: TextFile); - открывает текстовый файл для записи информации в конец файла
Erase (F: File); - удаляет файл, связанный с файловой переменной F, но файл не должен быть открыт для каких либо операций.
ReName (F:File; Name:String); - переименовывает файл, связанный с файловой переменной F и дает ему новое имя Name. Файл должен быть закрыт для всех операций.
CloseFile (Var F: File); - закрывает файл для всех операций. Все изменения файловой переменной отражаются на файле, расположенном на внешнем носителе информации
Read (F: File,<список переменных>); - читает из файла F данные и записывает их в переменные, указанные в списке после чтения каждого данного указатель чтения сдвигается на одну позицию (для текстовых файлов допустима операция Readln – осуществляется чтение по изложенным выше правилам, после чего указатель чтения смещается на начало следующей строки файла – оставшиеся в предыдущей строке данные пропускаются)
Write (var F: File; <список выражений>); - записывает в файл значения указанных в списке выражений (для текстовых файлов определена операция Writeln по которой после записи всего списка в файл записывается признак конца строки и указатель записи перемещается на начало следующей строки)
Eof (var F: File): Boolean – возвращает значение true если достигнут конец файла, false – в противном случае (для текстовых файлов определена функция Eoln (F:TextFile) возвращающая значение true если достигнут конец строки)
Для типизированных файлов допустимы следующие процедуры
FilePos (var F: File of): Longint – возвращает номер текущей позиции, на которую указывает указатель чтения/записи
FileSize (var F: File of):Integer – возвращает количество записей в типизированном файле
Seek (var F: File of; N: Longint) – перемещает указатель чтения/записи в N позицию
Truncate (var F: File of); - усекает типизированный файл на текущей позиции