Иллюстрированный самоучитель по Delphi 7 для профессионалов

Операции ввода/вывода

Теперь рассмотрим две самые распространенные операции, выполняемые при работе с файлами. Это чтение и запись. Для их осуществления применяются специальные функции файлового ввода/вывода.

Итак, для выполнения операции чтения или записи необходимо произвести следующие действия:

  1. Объявить файловую переменную необходимого типа.
  2. При помощи функции AssignFile связать эту переменную с требуемым файлом.
  3. Открыть файл при помощи функций Append, Reset, Rewrite.
  4. Выполнить операции чтения или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций.
  5. Закрыть файл при помощи функции CloseFile.

Внимание
По сравнению с Turbo Pascal изменились названия только двух функций: Assign стала AssignFile, a Close превратилась в CloseFile
.

В качестве примера рассмотрим небольшой фрагмент исходного кода.

…
var F: TextFile;
S: string;
begin
if OpenDlg.Execute
then AssignFiie(F, OpenDlg.FileName)
else Exit; Reset(F);
while Not EOF(F) do
begin
Readln(F, S);
Memo.Lines.Add(S);
end;
CloseFile(F);
end;
…

Если в диалоге открытия файла OpenDlg был выбран файл, то его имя связывается с файловой переменной F при помощи процедуры AssignFiie. В качестве имени файла рекомендуется всегда передавать полное имя файла (включая его маршрут). Как раз в таком виде возвращают результат выбора файла диалоги работы с файлами TOpenDialog, TOpenPictureDiaiog. Затем при помощи процедуры Reset этот файл открывается для чтения и записи.

В цикле выполняется чтение из файла текстовых строк и запись их в компонент TMemo. Процедура Readln осуществляет чтение текущей строки файла и переходит на следующую строку. Цикл выполняется, пока функция EOF не сообщит о достижении конца файла.

После завершения чтения файл закрывается.

Такой же исходный код можно использовать и для записи данных в файл. Необходимо только заменить процедуру чтения на процедуру записи.

Теперь остановимся подробнее на назначении используемых для файлового ввода/вывода функций.

Открытие файла может осуществляться тремя процедурами – в зависимости от типа его дальнейшего использования.

Процедура:

procedure Reset(var F: File [; RecSize: Word ]);

Открывает существующий файл для чтения и записи, текущая позиция устанавливается на первой строке файла.

Процедура:

procedure Append(var F: Text);

Открывает файл для записи информации после его последней строки, текущая позиция устанавливается на конец файла.

Процедура:

procedure Rewrite(var F: File [; RecSize: Word ]);

Создает новый файл и открывает его, текущая позиция устанавливается в начало файла. Если файл с таким именем уже существует, то он перезаписывается.

Переменная RecSize используется только при работе с нетипизированными файлами и определяет размер одной записи для операции передачи данных. Если этот параметр опущен, то по умолчанию RecSize равно 128 байт.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.