#18 Чтение данных -- Работа с файлами в Паскаль, assign, reset

(урок в процессе разработки)

В этом уроке мы рассмотрим примеры работы с текстовыми файлами (а именно способы чтения данных) средствами ЯП Паскаль.

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

Где сохранить текстовый файл

(определим его адрес в файловой системе)

Самый простой способ разместить файл -- положить его в ту же папку, в которой лежит исполняемый файл вашего проекта. Определить путь к этой папке можно выполнив код:

begin
  WriteLn('Put k failu programmy: ');
  WriteLn(ParamStr(0));
  readln();
end.

На экран вам будет выведено что-то вроде (у вас этот путь может быть другим -- действуйте по аналогии):

Put k failu programmy: 
C:\Users\TEMP.UIC.012\Documents\project1.exe

Получается, что директория:

C:\Users\TEMP.UIC.012\Documents

скорее всего доступна для размещения файлов, и потому в ней создадим файл с именем input.txt, который можно будет прочитать, то есть полный путь к нему будет:

C:\Users\TEMP.UIC.012\Documents\input.txt

ПРИМЕЧАНИЕ: убедитесь, что в вашей системе отображается расширение файлов -- иначе на деле может оказаться, что ваш файл называется не input.txt, а input.txt.txt

Чтение файлов

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

Var
    f1:text; // тип для открытия текстового файла
    filename, s: string;
begin
  filename := 'C:\Users\TEMP.UIC.012\Documents\input.txt'; // путь к файлу

  assign(f1, filename); { связывание переменной дескриптора
                        с путём к файлу }
  reset(f1); // открываем файла для чтения

  writeln('========nachalo faila=====');
  while not eof(f1) do // пока не достигнут конец файла
    begin
      readln(f1, s);  // читаем из него очередную строку
      writeln(s); // и выводим её в консоль
    end;
  writeLn('========= konez faila =========');

  readln();
end.

Задачи /(самостоятельная работа)

  1. Создайте файл в вашей операционной системе и выведите в консоль всё его содержимое.

Примеры

Пример №1 -- чтение содержимого файла с проверкой существовования

Var
    f1:text; // тип для открытия текстового файла
    filename, s: string;
begin

  filename := 'C:\Users\TEMP.UIC.012\Documents\input.txt'; // путь к файлу
  //filename := 'D:\tmp\my\input.txt'; // путь к файлу

  WriteLn('Put k failu programmy: ');
  WriteLn(ParamStr(0));

  assign(f1, filename);
  {$I-} reset(f1);  {$I+}  // попытка открыть файл на чтение с подавлением ошибки
  if IOResult <> 0 then    // если есть ошибки
  begin
    writeLn('File ', filename, ' ne naiden!');
  end else  // если удалось открыть на чтение
  begin
    writeLn('File ', filename, ' suchectvuet. I vot ego soderzimoe:');
    while not eof(f1) do
      begin
        readln(f1, s);
        writeln(s);
     end;
   end;
  writeLn('========= konez faila =========');

  readln();
end.       

Ещё примеры

  1. Проверка существования файла
  2. Фукция ParamStr() -- Путь к файлу и папке программы, определить откуда происходит запуск

Источники (что ещё почитать)