Пример 8.1.
Создать программу создания, записи и добавления записи текстового файла. Создать текстовый файл из 5 строк и посмотреть его содержимое. Затем добавить в этот файл еще 5 строк и проверить содержимое итогового файла.
Блок-схема алгоритма
Внимание!
- При работе с файлами в консольном приложении нельзя применять в путях к файлам символов кириллицы.
- Рекомендуется вводить строки со смыслом, лучше всего числовые – 1, 2, 3…Imax.
Листинг программы
program prg_8_1;
{$mode objfpc}{$H+}
uses
Classes, SysUtils, RusTrans;
const FileDir=’m:\Lazarus_examples\08_1\’;
var
MyFile: text; // Файловая переменная
FilePath,FileName,Temp: string; // Переменные для строк
i,imax: integer;
label
Exit;
begin
writeln(Rus(‘Введите имя файла’));
readln(FileName);
writeln;
FilePath:=FileDir+FileName; // Путь к файлу
AssignFile(MyFile,FilePath); // Связь файлом на диске
{$I-} // Отключить контроль ошибок
Rewrite(MyFile); // Создать новый файл
{$I+}; // Включить контроль ошибок
if IOResult = 0 // Проверить ошибку открытия
then writeln(Rus(‘Спасибо’))
else
begin
writeln(Rus(‘Ошибка’));
readln;
goto Exit; // Выход при ошибке
end;
writeln;
imax:=5;
writeln(Rus(‘Введите ‘),imax,Rus(‘ строк’));
for i:=1 to imax do // Повторять imax раз
begin
write(Rus(‘Строка ‘),i,’ = ‘);
readln(Temp); // Чтение строки с клавиатуры
writeln(MyFile,Temp); // Запись этой строки в файл
end;
CloseFile(MyFile); // Закрыть файл
Reset(MyFile); // Открыть его для проверки
i:=1;
writeln;
writeln(Rus(‘Содержимое файла’));
writeln;
while not EOF(MyFile) do // Повторять до конца файла
begin
readln(MyFile,Temp); // Чтение строки из файла
writeln(Rus(‘Строка ‘),i,’ = ‘,Temp); // Вывод строки
i:=i+1;
end;
writeln;
CloseFile(MyFile); // Закрыть файл
{$I-} // Отключить контроль ошибок
Append(MyFile); // Открыть для добавления
{$I+}; // Включить контроль ошибок
if IOResult = 0 // Проверить ошибку открытия
then writeln(‘OK’)
else
begin
writeln(Rus(‘Ошибка’));
readln;
goto Exit // Выход при ошибке
end;
writeln;
writeln(Rus(‘Введите ‘),imax,Rus(‘ строк’));
for i:=imax+1 to imax*2 do // Повторять imax раз
begin
write(Rus(‘Строка ‘),i,’ = ‘);
readln(Temp); // Чтение строки с клавиатуры
writeln(MyFile,Temp) // Запись этой строки в файл
end;
CloseFile(MyFile); // Закрыть файл
Reset(MyFile); // Открыть его для проверки
i:=1;
writeln;
writeln(Rus(‘Содержимое файла’));
writeln;
while not EOF(MyFile) do // Повторять до конца файла
begin
readln(MyFile,Temp); // Чтение строки из файла
writeln(Rus(‘Строка ‘),i,’ = ‘,Temp); // Вывод строки
i:=i+1;
end;
writeln;
writeln(‘OK’);
readln;
CloseFile(MyFile); // Закрыть файл
Exit:;
end.
Консоль перед закрытием программы: