Работа с файлами в object pascal осуществляется через файловые переменные.

      Комментарии к записи Работа с файлами в object pascal осуществляется через файловые переменные. отключены

Лабораторная работа № 14

Обработка файлов

Теоретические пояснения

С точки зрения Object Pascal существуют три категории файлов: текстовые, типизированные и файлы без типа.

Мы будем рассматривать только текстовые файлы.

Файлы, состоящие из строк, называются текстовыми. Компоненты таких файлов могут быть символьного, строкового и арифметического типа.

Признак конца строки (код #13) вставляется клавишей Enter при вводе строк с клавиатуры или оператором WriteLnпри записи данных из программы.

Признаком конца файла является символ #26, на экране может отображаться как ^Z.

Текстовые файлы можно обрабатывать только последовательно. Ввод и вывод нельзя осуществлять одновременно для одного и того же файла.

Работа с файлами в Object Pascal осуществляется через файловые переменные.

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

Var: TextFile;

Например,

VarF1,F2: TextFile

означает, что мы можем работать одновременно с двумя текстовыми файлами, обращаясь к ним по именам F1 и F2, которые и являются файловыми переменными.

Существуют стандартные процедуры для работы с текстовыми файлами через файловые переменные:

AssignFile(, ») – связывает файловую переменную с именем файла на диске. В качестве имен файлов можно использовать стандартные имена:

— Con – консоль, т.е. клавиатура и дисплей;

— Prn – принтер;

— Nul – пустой файл. При чтении из Nul сразу же обнаруживается конец файла, а при записи ничего не происходит.

Append() – открывает существующий файл для последовательной записи (добавления) данных в конец файла. Если файл был открыт, то сначала он закрывается, а затем заново открывается.

Rewrite() – создаёт и открывает файл для записи данных. Если файл с указанным именем уже существует на диске, то он удаляется и создается новый.

Reset() – открывает существующий файл только для чтения. Если файл был открыт, то сначала он закроется, а затем заново откроется.

Read(, ) – читает информацию из файла в переменные, указанные в списке. Процедура чтения зависит от типа переменной, стоящей в списке.

— Если очередная переменная – символьного типа, то в нее помещается один следующий символ из файла (включая EOLn, EOF).

— Если очередная переменная – арифметического типа, то далее считывается арифметические символы до появления пробелов, табуляции, EOLn или EOF.

— При чтении данных в строковую переменную передаются все символы до появления маркеров EOLn или EOF, маркер в строку не заносится.

После последнего прочитанного символа запоминается текущая позиция в файле. Новый оператор Read будет читать не с начала файла, а с текущей позиции.

ReadLn(, ) – отличается от Read тем, что после чтения указанных переменных пропускаются все символы до конца строки и осуществляется переход к новой строке, начало которой становится текущей позицией.

ReadLn() без списка переменных вызывает продвижение текущей позиции в файле к началу следующей строки.

Write(,) – записывает информацию в конец файла из указанных в списке переменных. Для символьных, арифметических, строковых и логических переменных выводятся их значения в соответствие с заданным форматом.

WriteLn(, ) – отличается от Write тем, что после вывода всех переменных в файл записывает маркер конца строки – EOLn.

CloseFile() – закрывает файл и, если он был открыт для записи, – освобождает связанный с ним буфер.

Файл, открытый для записи, обязательно надо закрыть, т.к. при этом дозаписываются данные, хранящиеся в буфере. В противном случае эти данные могут быть потеряны, а буфер будет недоступен для записи новых файлов.

Пример

Пусть файл example.txt содержит текст:

Пример:

2 + 3.5Е01 равно:

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

Соответствующая часть программы будет иметь вид:

Var

N1,N2,res : Double; {для чтения данных}

StrSgn : String[3]; { для строки с операцией}

F : TextFile; {файловая переменная}

Begin

AssignFile(F,’example.txt’); {Связать переменную F с файлом example.txt}

Reset(F); {Открыть файл example.txt для чтения}

ReadLn(F); {Пропустить слово пример}

Read(F,N1,StrSgn,N2); {Прочитать данные и строку операции}

Append(F); {Закрыть и открыть файл для добавления}

WriteLn(F); {Перейти на новую (третью) строку}

CaseSgn[2] of{Взять операцию – второй символ в строке}

’+’ : res := N1+N2;

’-’ : res := N1-N2;

’*’ : res := N1*N2;

’/’ : res := N1/N2;

end;

Write(F, FormatFloat(‘#.###E+00’, res));

CloseFile(F);

end;

После работы данного блока программы содержимое файла example.txt примет вид:

Пpимеp:

2+3.5E01 равно:

3.7E+01

Статьи к прочтению:

Работа с Файлами в Pascal


Похожие статьи:

  • Работа с файлами и папками

    Концепция работы с файлами в Java включает две составляющие: Работа с файлами и папками с помощью объектов типа File. Обеспечивает работу с именами…

  • Работа с файлами и каталогами

    Лекция 16. Работа с файлами и каталогами различных ОС. План занятия: 1. Работа с файлами. 2. Работа с каталогами. 3. Служебные программы. 4. Особенности…