Продолжаем тему «Файлы в языке Delphi». В предыдущей статье мы рассмотрели назначение файла и вывод данных в файл. Однако прежде чем вывести в файл необходимую информацию, файл для начала нужно открыть. В чем заключается открытие файла для вывода Delphi?
Если в процессе работы программа, которая формирует конечный выходной файл, уже применялась, то есть вероятность, что данный файл с полученными результатами работы этой программы уже имеется на жестком диске ПК. По этой причине перед программистом встает вопрос: что делать со старым файлом?
Вариантов развития событий два: либо провести замену старых данных новыми, либо осуществить добавление новых данных к старым. Способ применения старого варианта вырисовывается в момент открытия файла. Итак, наиболее предпочтительными являются следующие два режима открытия файла для записи полученных данных (т. е. внесения в него нужной информации):
- перезапись, что означает проведение записи нового файла поверх существующего файла, либо формирование нового файла;
- добавление в уже существующий файл.
Для открытия файла, используя режим создания нового файла, либо замены уже имеющегося файла, нужно воспользоваться процедурой Rewrite(fail), откуда fail — является файловой переменной, имеющей тип данныхTextFile. Для открытия файла, используя режим добавления данных к уже существующему файлу, используйте процедуру Append(fail), где fail — есть файловая переменная, имеющая тип данных TextFile.
Примеры программ на открытие файла для вывода Delphi
Создадим программу, которая бы записывала или добавляла данные в текстовый файл. На рис. ниже представим диалоговое окно данной программы:
А частичный исходный код (расположен ниже) программы немного прокомментируем.
procedure TForm1.Button1Click(Sender: TObject); var tf: TextFile; // файл текстового типа fn: String[50]; // имя файла j: integer; // счетчик begin fn := Edit1.Text; AssignFile(tf, fn); Rewrite(tf); // открыть для перезаписи // осуществление записи в файл for j: =0 to Memol.Lines.Count do // строки будем нумеровать с нуля строки writeln(tf, Memol.Lines[j]) CloseFile(tf); //закрываем файл MessageDlg('Информация записана в файл ',mtlnformation,[mbOk],0); end;
Как вы видите, в листинге программы используется процедура, запуск которой осуществляется при нажатии на командную кнопку «Записать».
Данная процедура выполняет открытие файла с использованием режима создания нового файла или замещения уже имеющегося файла и записывает текст, располагающийся в пределах поля компонента Memo1.
В нашей программе в процессе работы необходимо указание имени файла в поле компонента Edit1. Однако в процессе разработки формы приложения можно указать заранее предопределенное имя файла. Чтобы это произвести, нужно свойству Edit1.Text присвоить некоторое значение, к примеру, fail.txt.
В листинге ниже приведем следующем процедуру, которую можно запустить при нажатии на кнопку «Добавить». При помощи этой процедуры проводится открытие файла (его имя задано в поле компонента Edit1) и добавление в него содержимого поля компоненты Memo1.
procedure TForm1.Button2Click(Sender: TObject); var tf: TextFile; // файл текстового типа fn: String[50]; // имя файла j: integer; // счетчик begin fn:= Edit1.Text; AssignFile(tf, fn); Append(tf); // открыть для добавления // осуществление записи в файл for j:=0 to Memo1.Lines.Count do // строки будем нумеровать с нуля writeln(tf, Memo1.Lines[j]); CloseFile(tf); // закрываем файл MessageDlg('Информация добавлена в файл ',mtInformation,[mbOk],0); end;