Нетипизированные файлы могут содержать элементы, тип которых не указан. Нетипизированные файлы позволяют записывать на диск произвольные участчки памяти ЭВМ и считывать их с диска в память.
Такие файлы описываются стандартным типом file. При использовании процедур Reset и Rewrite, для таких файлов указывается параметр RecSize, который задает длину компоненты файла в байтах. Обычно задается 1 байт.
Для нетипизированных файлов применяются следующие процедуры, осуществляющие операции ввода/вывода данных:
BlockRead(f,X,K[,KR]) – читает из логического файла f, K компонент и помещает их в память ЭВМ, определенную переменной X.
BlockWrite(f,X,K[,KR]) – записывает в логического файла f участок памяти определяемый переменной X, размером K*RecSize байт.
Необязательный параметр KR определяет переменную, в которую будет записано количество реально считанных/записанных компонент.
Смысл последовательного доступа заключается в том, что в каждый момент времени доступна лишь одна компонента из всей последовательности. Для того, чтобы обратиться (получить доступ) к компоненте с номером К, необходимо просмотреть от начала файла К-1 предшествующую компоненту. После обращения к компоненте с номером К можно обращаться к компоненте с номером К+1.
Файл вначале строится при помощи последовательного добавления компонент в конец, а затем может последовательно просматриваться от начала до конца.
Стандартные процедуры ввода/вывода обеспечивают последовательный доступ. Для типизированных и нетипизированных файлов, можно применять прямой доступ. Прямой доступ означает возможность заранее определить компонент файла, к которому будет применена операция ввода - вывода.
Прямой доступ предполагает, что файл представляет собой линейную последовательность компонент нумеруемую от 0 до n-1, где n – текущее количество компонент в файле. В файле существует текущая позиция – номер компоненты, с которой будет осуществляться следующая операция ввода/вывода. При открытии файла текущая позиция устанавливается в 0.
Реализация прямого доступа осуществляется с помощью подпрограмм:
Функция FileSize(f) – возвращает количество компонент в файле f.
Функция FilePos(f) – возвращает текущую позицию в файле f.
Процедура Seek(f,N) – устанавливает текущую позицию в файле f.
Процедура Truncate(f) – удаляет все компоненты от текущей позиции до конца файла f.