Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмирование 49-54.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
561.12 Кб
Скачать
  1. Особенности обработки типизированных и нетипизированных файлов.

Работа стипизированными файлами

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

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

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

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

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

1. filesize(файл_переменная) возвращает количе-ство компонент в типизированном файле. Для Turbo Pascal результат имеет тип longint, для PascalABC.NET  тип int64.

2. filepos(файл_переменная) возвращает текущую позицию файлового указателя. Для Turbo Pascal результат имеет тип longint, для PascalABC.NET  тип int64.

3. truncate(файл_переменная) все компоненты по-сле текущей удаляются. После выполнения этой процеду-ры файловый указатель помещается в позицию конца файла (функция eof возвращает значение true).

4. seek(файл_переменная,n) перемещает файловый указатель на n компонент.

5. seekeoln(файл_переменная) после текущей по-зиции файлового указателя пропускаются все символы-разделители (пробелы, табуляции). Если при этом достиг-нут конец файла, то

6. seekeof(файл_переменная)

Работа с нетипизированными файлами

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

В PascalABC.NET для работы с типизированными файлами ис-пользуются те же процедуры и функции, что и для работы с типизи-рованными: reset, write, read, write. Транслятор самостоятель-но выделяет требуемый объем памяти, необходимый для записи и считывания данных.

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

reset(файл_переменная,размер_буфера); и

rewrite(файл_переменная,размер_буфера);,

где размер_буфера размер блока памяти (в байтах), который считывается или записывается при единичном обращении к файлу. Если размер_буфера не указан, он принимается равным 128 бай-там. Максимальное значение размер_буфера составляет 64 КБ.

Для чтения и записи данных применяются процедуры:

1. Blockread(файл_перем,target,n,result); считывает n или меньшее количество компонент из файла, связанного файл_перем в переменную target. В случае, когда реальное число считанных переменных меньше указанного в параметре n (например, когда при чтении встретился символ конца файла), то в переменную result записывается действительное количе-ство компонент, которые были считаны.

2. Blockwrite(файл_перем,target,n,result); аналогично предыдущей процедуре, только по отношению к записи данных в нетипизированный файл.