Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Начало работы в Delphi.doc
Скачиваний:
16
Добавлен:
18.11.2019
Размер:
428.03 Кб
Скачать

Назначение файла

Объявление файловой переменной задает только тип компонентов файла. Для того, чтобы программа могла выводить данные в файл или считывать их из файла, необходимо указать конкретный файл, т.е. задать имя файла.

Имя файла задается с помощью процедуры AssignFile, связывающей файловую переменную с конкретным файлом.

Описание процедуры AssignFile выглядит так:

AssignFile( var f, Имя_файла: string);

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

Для того, чтобы все стало понятно приведу примеры:

AssignFile(f,'c:\Windows\1.txt');

AssignFile(f,'\students\results.txt');

А если необходимый вам файл находится в той же директории, что и ваша программа, то объявление процедуры может выглядеть так:

AssignFile(f,'config.cfg');

Вывод в файл

Непосредственно вывод в текстовый файл осуществляется при помощи знакомых всем инструкций write или writeln. В общем виде эти инструкции можно записать так:

write(Файловая_перменная, Список_Вывода);

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

Список_Вывода - разделенные запятыми имена переменных, значения которых надо записать в файл.                Помимо имен переменных в список вывода можно включать и строковые константы.

Например, если переменная f является переменной типа TextFile, то инструкция вывода значений переменных x1 и x2 может быть такой:

write(f, ' Корни введенного уравнения: ',x1,x2);

Различие между инструкциями write и writeln состоит в том, что инструкция writeln после вывода всех значений, указанных в списке вывода, записывает в файл символ "новая строка".

Открытие файла для вывода

Перед выводом в файл его необходимо открыть. Если программа, формирующая выходной файл, уже использовалась, то возможно, что файл с результатами уже есть на диске. Поэтому программист должен решить, как поступить со старым файлом: заменить старые данные на новые или новые данные добавить к старым. Способ использования старого файла определяется во время открытия файла.

Возможны следующие режимы открытия файла для записи в него данных:

Перезапись (запись нового файла поверх существующего или создание нового файла, если его не существует)

Добавление в существующий файл (как правило в конец файла, но можно записать данные и в произвольное место)

Для того, чтобы открыть файл в режиме создания нового файла или замены существующего, необходимо вызвать процедуру Rewrite(f), где f - файловая переменная типа TextFile.

Для того, чтобы открыть файл в режиме добавления, необходимо вызвать процедуру Append(f), где f - файловая переменная типа TextFile.

Для того, чтобы понять принцип работы с файлами создадим пробную программу. На форме будут две командных кнопки. Одна с надписью "Создать", другая  - "Добавить". При нажатии на кнопку "Создать" (Button1) будет создаваться текстовый файл и в него будет записано 3 строки. При нажатии "Добавить" в конец файла будет добавлено еще 3 строки текста.

Процесс создания программы рассмотрим по частям. Для начала напишем обработчик события кнопки "Создать" (Button1). Этот код будет выглядеть примерно так:

 

Листинг 4. Создание нового или замена существующего файла

procedure TForm1.Button1Click(Sender: TObject); var f:TextFile; i:integer; begin AssignFile(f,'D:\test.txt');{Объявляем файл} Rewrite(f); {Открываем файл} for i:=1 to 3 do writeln(f,'Строка ',i);{записываем в файл} CloseFile(f);{закрываем файл} end;

В результате выполнения приведенной выше процедуры на диске D: появится файл test.txt. Его содержание будет таким:

Строка 1

Строка 2

Строка 3

На листинге 5 приведена процедура, которая запускается щелчком командной кнопки "Добавить". 

 

Листинг 5. Добавление в существующий файл

procedure TForm1.Button2Click(Sender: TObject); var f:TextFile; i:integer; begin AssignFile(f,'D:\test.txt');{объявляем файл} Append(f);{открываем для добавления} for i:= 4 to 6 do writeln(f,'Строка ',i);{записываем} CloseFile(f);{закрываем файл} end;

В результате нажатия на первую кнопку, а затем на вторую содержимое файла test.txt изменится и его содержимое станет таким:

Строка 1

Строка 2

Строка 3

Строка 4

Строка 5

Строка 6

Если после щелчка на кнопке "Добавить", нажать еще раз кнопку "Создать", то файла будет содержать только три строки.

Исходные коды это программки для Дельфи 5 вы можете скачать здесь.

На всякий случай приведу полный код приложения:

Листинг 6. Полный код программы работы с файлами

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var f:TextFile; i:integer; begin AssignFile(f,'D:\test.txt');{Объявляем файл} Rewrite(f); {Открываем файл} for i:=1 to 3 do writeln(f,'Строка ',i);{записываем в файл} CloseFile(f);{закрываем файл} end; procedure TForm1.Button2Click(Sender: TObject); var f:TextFile; i:integer; begin AssignFile(f,'D:\test.txt');{объявляем файл} Append(f);{открываем для добавления} for i:= 4 to 6 do writeln(f,'Строка ',i);{записываем} CloseFile(f);{закрываем файл} end; end.