Сделай Сам Свою Работу на 5

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





А. Типизированные файлы

Типизированный файл - это файл, состоящий из последовательности элементов (называемых компонентами) одного типа. Количество компонентов файла при задании файла не ограничивается.

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

Длиной файла называется число находящихся в нём компонентов. Пустым файлом называется файл, не содержащий компонентов. Длина пустого файла равна нулю. Общий вид описания файлового типа:

type R=File of TC,

где: File (от англ. файл), of (от англ. из) - служебные слова;
R - идентификатор типа;
TC - тип компонентов (не может быть типом File).

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

В каждый момент времени доступен только один компонент файла (при этом говорят, что на этот компонент установлен указатель файла). Следовательно, читать файл можно только последовательно по одному компоненту. Поэтому рассматриваемые файлы называются файлами последовательного доступа (или последовательными файлами).

Над файлами можно выполнять два явных вида действий:



  1. Создание файла. Оно выполняется в результате добавления новых компонент в конец первоначально пустого файла. В процессе создания новые значения разрешается записывать только в конец файла;
  2. Просмотр файла. Он выполняется в результате последовательного продвижения по файлу, начиная с его начала. При этом в каждый момент времени доступен лишь один компонент файла. В процессе просмотра файла изменять значения компонентов на новые запрещается.

Начать писать в файл можно только с самого его начала, дописывая новые компоненты последовательно одну за другой; для чтения также надо начинать просмотр файла с самого начала. Вследствие такой организации на одном просмотре файла нельзя совмещать и чтение, и запись информации: можно либо только читать из файла, либо только писать в файл. Однако, работая с различными файлами A и B, можно одновременно читать файл A и писать в файл B (и наоборот).

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



Некоторые стандартные процедуры для последовательной работы с файлами

1. Assign (var F: File; Name: String); Assign (var F: File of Type; Name: String),

где: Assign (от англ. назначить) - имя процедуры;
F - имя файловой переменной (логическое имя файла);
Name - имя файла на диске (физическое имя файла). Это имя связывается с файловой переменной F, и в дальнейшем все операции с F будут производиться над дисковым файлом с именем Name.

После выполнения этой процедуры Name и F отождествляются, т.е. отождествляются логическое и физическое имена файла.

Данная процедура должна выполняться перед использованием файла. Перед выполнением операций ввода-вывода файл должен быть открыт с помощью одной из следующих процедур:

2. Reset (var F: File),

где: Reset (от англ. переустановить) - имя процедуры;
F - имя переменной файлового типа.

Процедура открывает файл F для чтения и ставит указатель на начало первого компонента файла (на компонент с номером 0).

Файловая переменная F должна соответствовать уже существующему на диске файлу, иначе возникает ошибка "I/О error" (от англ. Input/Output error - ошибка ввода-вывода).

3. Rewrite (var F: File),

где: Rewrite (от англ. установить на запись) - служебное слово;
F - имя переменной файлового типа.

Процедура открывает файл F для записи, "очищает" его и помещает указатель на начало первого компонента файла. Таким образом, существующий файл с данным именем будет уничтожен. Дисковый файл, организуемый с помощью процедуры Rewrite, создается пустым (не содержащим компонентов).

4. Read (var F: File of Type; var V: Type),

где: Read (от англ. читать) - имя процедуры;
F - имя переменной файлового типа;
V - имя переменной (или список из нескольких переменных, разделенных запятыми), совпадающей по типу с типом Type элементов файла.



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

5. Write (var F: File of type; var V: Type),

где: Write (от англ. писать) - имя процедуры;
F - имя переменной файлового типа;
V - имя переменной (или список нескольких переменных, разделенных запятыми), совпадающей по типу с типом элементов файла Type.

Каждая переменная записывается в дисковый файл, и после окончания операции записи файловый указатель перемещается на следующий компонент файла. После окончания работы с файлом, он должен быть закрыт, иначе результат будет потерян. "Закрывает" файл процедура Close.

6. Close (var F: File),

где: Close (от англ. закрыть) - служебное слово;
F - имя переменной файлового типа.

Дисковый файл, отождествленный с переменной F, закрывается и в каталог диска вносятся необходимые изменения.

Процедуры для организации прямого доступа к компонентам файла последовательного доступа

1. Seek (F,n),

где: Seek (от англ. искать) - имя процедуры;
F - имя переменной файлового типа;
n - целочисленное выражение.

Процедура перемещает указатель файла на компоненту файла с номером n (номер первой компоненты файла равен 0).

2. Seek (F,FileSize(F)),

где: Seek - имя процедуры;
F - имя переменной файлового типа;
FileSize() - стандартная функция возвращает количество компонентов файла, а т.к. компоненты нумеруются, начиная с 0, то результат получается на единицу большим номера последнего компонента файла.

Процедура позволяет помещать указатель файла за конец файла.

Стандартные функции для работы с файлами

1. EOF (var F: File): Boolean,

где: EOF (от англ. End Of File - конец файла) - имя функции;
F - имя переменной файлового типа.

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

2. FilePos (var F: File of Type): Integer; FilePos (var F: File): Integer,

где: FilePos (от англ. File Position - позиция файла) - имя функции;
F - имя переменной файлового типа.

Функция возвращает значение текущей позиции указателя файла. Номер первой компоненты файла равен 0.

3. FileSize (var F: File of Type): Integer; FileSize (var F: File): Integer,

где: FileSize (от англ. File Size - размер файла) - имя функции;
F - имя переменной файлового типа.

Функция возвращает размер файла, т.е. число компонентов файла. Если FileSize(F)=0, то файл является пустым.

Замечание. Функции FilePos() и FileSize() не применимы к текстовым файлам.

Б. Текстовые файлы как "почти" типизированные файлы

Особое практическое значение имеют типизированные файлы, компонентами которых являются символы, т.е. файлы типа File of Char. Текстовыми файлами (типа Text) называются "почти" типизированные файлы, имеющими компоненты, которые могут иметь либо типа Char, либо являться символом "Конец строки". Символ "Конец строки" - это совокупность символов "Перевод строки" с шестнадцатеричным кодом 0D и "Возврат каретки" с шестнадцатеричным кодом 0A.

Символы в текстовом файле сформированы в последовательности символов типа Char, которые называются строками; каждая строка оканчивается специальным составным символом, который называется "Конец строки".

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

1. ReadLn (var F: Text)

Процедура осуществляет переход к началу следующей строки, т.е. пропускает все символы текущей строки.

2. WriteLn (var F: Text)

Процедура записывает символ "Конец строки" в текстовый файл.

3.EOLN (var F: Text): Boolean

Функция возвращает TRUE, если в файле F найден символ "Конец строки" или символ "Конец файла" и FALSE - в противном случае.

Замечание. С символом EOLN оперируют следующие процедуры:

  1. процедура WriteLn(F) записывает символ "Конец строки" (EOLN) в компонент файла, на который установлен указатель файла;
  2. процедура ReadLn(F) пропускает оставшуюся часть текущей строки и устанавливает указатель файла на первый символ новой строки.

4. EOF (var F: Text): Boolean

При работе с текстовым файлом функция возвращает результат TRUE, если указатель файла расположен в позиции символа "Конец файла" ("CTRL"+"Z") и FALSE - в противном случае.

5. SeekEOLN (var F: Text): Boolean

Аналогична функции EOLN, но пропускает символы "Пробел" перед проверкой на достижение символа "Конец строки".

6. SeekEOF (var F: File): Boolean

Аналогична функции EOF, но пропускает символы "Пробел" и символы "Конец строки" перед проверкой на достижение символа "Конец файла".

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.