Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы к экзамену 509и Программирование -янв.....doc
Скачиваний:
2
Добавлен:
15.04.2019
Размер:
133.63 Кб
Скачать

13. Типизированные файлы: строение, чтение данных из типизированных файлов.

Длина любого компонента типизированного файла строго постоянна, т.к. тип компонент определяется при описании, а, следовательно, определяется объем памяти, отводимый под каждую компоненту. Это дает возможность организовать прямой доступ к каждой компоненте (т.е. доступ по порядковому номеру). Типизированный файл определяется следующим образом-var filevar:file of тип. Где тип это или предопределенный или пользовательский типы. В качестве типов не могут фигурировать динамические структуры, такие как динамические массивы, длинные строки или любые указатели, поскольку все записи должны быть одинаковой длины и не должны указывать на внешние данные. Для обработки таких данных надо использовать нетипизированные файлы.Наряду с ранее указанными процедурами нам надо знать еще об одной, это процедура Seek, которая не применима для текстовых файлов, а для типизированных файлов используется для перемещения указателя на нужную запись.Для определения количества записей в файле можно использовать функцию FileSize, которая возвращает именно количество записей, а не длину файла, как это следует из ее названия.Для определения текущей позиции в файле можно использовать функцию FilePos.Для уменьшения длины файла можно использовать процедуру Truncate, которая обрезает файл по текущей позиции. Замечания по поводу открытия файлов, для этого используются две ранее описанные процедуры: ReWrite - создает новый файл для чтения/записи, если такой файл существует, то его длина устанавливается в ноль и Reset - открывает файл для чтения/записи и не изменяет его длины..Все записи считаются с нуля. К компонентам файла возможен как прямой, так и последовательный доступ.  Это файл с произвольным доступом. Информация в типизированном файле хранится в двоичном коде. В типизированных файлах информация хранится в машинном представлении. Никаких преобразований при вводе-выводе не происходит, за счет этого возрастает скорость ввода-вывода, но зато такая информация непригодна для просмотра в обычных текстовых редакторах.      Для того чтобы прочитать файл или, наоборот, произвести в него запись, необходимо, как и при работе с текстовыми файлами, установить связь между файловой переменной и файлом на диске компьютера. Это делается с помощью процедуры:  Assign(имя_файловой_переменной, 'prim');     Затем файл открывается процедурой:  Reset(имя_файловой_переменной);     или  ReWrite(имя_файловой_переменной);      Процедурой Reset открываются уже существующие файлы, ReWrite -- новые. Если файл уже был открыт, то он сначала закрывается, а затем открывается вновь.  В отличие от текстовых типизированные файлы допускают операции как записи, так и чтения независимо от того, какой процедурой файл открыт. Закрывается файл процедурой Close.      Чтение из типизированного файла производится процедурой:  Read(имя_файловой_переменной, v1, v2, ..., vN);,     а запись -- процедурой:  Write(имя_файловой_переменной, v1, v2, ..., vN);,    где v1, v2, ..., vN -- переменные базового типа (того же, что и элементы файла). Произвольный доступ к элементам файла осуществляется процедурой: Seek(имя_файловой_переменной, номер_элемента : LongInt);     Эта процедура устанавливает указатель файла на элемент, номер которого является вторым параметром процедуры Seek. Именно в этот элемент будет записано значение переменной v1: Write(имя_файловой_переменной, v1);     или считано значение:  Read(имя_файловой_переменной, v1);     Текущее положение указателя файла определяется функцией: FilePos(имя_файловой_переменной) : LongInt;,      а общее количество записей -- функцией: FileSize(имя_файловой_переменной) : LongInt;     Поскольку типизированные файлы не разбиты на строки, процедуры ReadLn и WriteLn для них не имеют смысла.