
- •Оглавление
- •Урок-лекция №24 Файлы. Файловые переменные
- •Var Fx: File Of char;
- •X: char; I: Byte;
- •Var Fx: File Of char;
- •X: char;
- •Стандартные процедуры и функции обработки файлов
- •Текстовые файлы
- •Var f1,f2: text;
- •Var Note: Text; к: Integer;
- •Var Note: Text;
- •Файлы без типа (нетипизированные файлы)
- •Var fromf, tof: file;
- •Var f: File; I: Byte; Rec: r; Result: Word;
- •Var f: File;
- •I: Integer;
- •Var I: Byte;
- •Var b: Byte;
- •Контрольные вопросы
- •Задание
Стандартные процедуры и функции обработки файлов
Файлы идентифицируются посредством соответствующих файловых переменных. Процедуры и функции для работы с файлами.
ASSIGN (<имя файла>,<имя файла на носителе>); – процедура устанавливает связь между именем файловой переменной и именем файла на носителе. Здесь <имя файла> – это файловая переменная, т.е. правильный идентификатор, объявленный в программе как переменная файлового типа. <Имя файла на носителе> – текстовое выражение, содержащее имя файла или имя логического устройства. Перед именем файла на носителе может ставиться путь к файлу – имя диска и (или) имя текущего каталога и имена каталогов вышестоящих уровней.
RESET(<имя файла>); – процедура открытия существующего файла для чтения при последовательном доступе и для чтения и записи при прямом доступе. Указатель файла при этом устанавливается на первую запись (с 0 номером).
REWRITE(<имя файла>); – процедура открытия создаваемого файла для записи. Если файл с таким именем уже существовал, то он стирается. Указатель файла устанавливается на первую запись.
READ(<имя файла>, <переменные>); – процедура чтения очередных компонент файла в переменные, тип которых должен совпадать с типом компонент файла. Указатель файла при этом передвигается на количество прочитанных компонент.
WRITE(<имя файла>, <переменные>); – процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонент.
SEEK(<имя файла>, <номер компоненты>); – процедура установки текущего указателя для чтения или записи требуемой компоненты файла. Используется для организации прямого доступа к записям файла.
CLOSE(<имя файла>); – процедура закрытия файла. Обязательно должна использоваться после создания файла, иначе может произойти потеря данных.
ERASE(<имя файла>); – процедура уничтожения файла. Открытый файл прежде должен быть закрыт.
RENAME(<старое имя файла>, <новое имя файла>); – процедура для переименования файла. Используется после закрытия файла.
IORESULT:Integer; – функция возврата условного признака последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает нуль. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а {$I+} – включает автоконтроль ошибок. Если автоконтроль отключен и операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.
FILEPOS(<имя файла>):LongInt;– функция определения номера текущей записи файла.
FILESIZE(<имя файла>):LongInt; – функция определения общего количества записей файла.
EOF(<имя файла>):Boolean; – функция определения признака конца файла. Получает значение TRUE при чтении последней записи файла.
EOLN(<имя файла>):Boolean; – функция обнаружения конца строки в текстовом файле. Имеет значение TRUE, если найден конец строки.
Текстовые файлы
Текстовые файлы состоят из последовательности символов, разделенных на строки. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки (к.с.). Весь файл заканчивается символом конец файла (к.ф.). схематически это выглядит так:
S1 |
S2 |
… |
Sk1 |
к.с. |
|
S1 |
S2 |
… |
Sk2 |
к.с. |
|
… |
к.ф. |
Каждый символ представлен во внутреннем коде ASCII и занимает 1 байт. Текстовый файл отличается от символьного не только делением на строки. В текстовый файл можно записать и из него прочитать информацию любого типа. Если эта информация не символьная, то в процессе чтения или записи происходит ее преобразование из символьной формы во внутреннюю и обратно.
К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип TEXT.
Формат описания
VAR < имя файла>: TEXT;
Посимвольные операции ввода-вывода выполняются для текстовых файлов процедурами READ и WRITE. Строки обрабатываются специальными процедурами для текстовых файлов READLN и WRITELN. Кроме того, для текстовых файлов применяются процедуры ASSIGN, RESET, REWRITE, CLOSE, EOF, EOLN. APPEND (<имя файла>); – процедура открывает существующий текстовый файл для добавления записей.
Для текстовых файлов нельзя использовать процедуры и функции SEEK, FILEPOS, FILESIZE, т.к. элементы имеют разную длину.
INPUT и OUTPUT – стандартные текстовые файлы для ввода с клавиатуры и вывода на экран.
Каждая строка текстового файла завершается признаком конца строки EOLN, который образуется сочетанием двух символов: возврата каретки и перевода строки.
Для считывания информации из текстового файла используются процедуры: Read и Readln. Их формат следующий:
READ (< имя >, <пер1>[,<пер2>,.., <перN>]);
READLN (< имя >, <пер1>[,<пер2>,.., <перN >]);
Здесь < имя > - файловая переменная, а <пер1>,<пер2>,.., <перN > - переменные типа String, в которые должна считываться информация.
Процедура READ считывает строку из файла без перехода на следующую строку в переменную, а READLN – с переводом строки.
Для записи информации в файл используются процедуры WRITE и WRITELN. Их формат такой же, что и у процедур READ и READLN.
EOLN(<имя файла>):Boolean; - функция обнаружения конца строки.
Пример 4. Дан текстовый файл F1.Необходимо заменить во всех записях этого файла код группы DC-101 на DC-201. Скорректированные записи поместить в файл F2.