Открытие файла для вывода
Перед выводом в файл его необходимо открыть. Если программа, формирующая выходной файл, уже использовалась, то возможно, что файл с результатами работы программы уже есть на диске. Поэтому программист должен решить, как поступить со старым файлом: заменить старые данные новыми или новые данные добавить к старым. Способ использования старого варианта определяется во время открытия файла.
Возможны следующие режимы открытия файла для записи в него данных:
- перезапись (запись нового файла
поверх существующего или создание нового файла);
- добавление в существующий файл.
Для того чтобы открыть файл в режиме добавления к уже существующим данным, находящимся в этом файле, нужно вызвать процедуру Append (f), где f — файловая переменная типа TextFile.
На рис. 7.1 приведено диалоговое окно программы, которая выполняет запись или добавление в текстовый файл.
Рис. 7.1.
Диалоговое окно программы записи-добавления в файл
Имя файла нужно ввести во время работы в поле Editl. Можно задать предопределенное имя файла во время разработки формы приложения. Для этого надо присвоить значение, например test.txt, свойству Edit1.Text.
Листинг 7.1.
Создание нового или замещение существующего файла
f: TextFile; // файл
fName: String[80]; // имя файла
i: integer; begin
fName := Editl.Text;
AssignFile(f, fName);
Rewrite(f); // открыть для перезаписи
// запись в файл
for i: =0 to Memol.Lines.Count do // строки нумеруются с нуля writeln(f, Memol.Lines[i]);
CloseFile(f); // закрыть файл
MessageDlg('Данные ЗАПИСАНЫ в файл ',mtlnformation,[mbOk],0); end;
В листинге 7.2 приведена процедура, которая запускается нажатием командной кнопки Добавить. Она открывает файл, имя которого указано в поле Edit1, и добавляет в него содержимое поля Memol.
Листинг 7.2.
Добавление в существующий файл
f: TextFile; // файл
fName: String[80];.// имя файла
i: integer; begin
fName := Edit1.Text;
AssignFile(f, fName);
Append(f); // открыть для добавления // запись в файл
for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля writeln(f, Memo1.Lines[i]);
CloseFile(f); // закрыть файл
MessageDlg('Данные ДОБАВЛЕНЫ в файл ',mtInformation,[mbOk],0); end;