Нетипизированные файлы объявляются как файловые переменные типа Fi1е
отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой — позволяет организовать высокоскоростной обмен данными между диском и памятью.
При открытии нетипизированного файла процедурой Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Например, так:
var F: File;
begin
AssignFile(F, 'myfile.dat');
Reset(F, 512);
end:
Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам Reset или Rewrite, в качестве которого может использоваться выражение типа LongInt. Если длина записи не указана, она принимается равной 128 байтам.
Object Pascal не накладывает каких-либо ограничений на длину записи нетипизированного файла, за исключением требований положительности и ограничения на максимальную длину в 2 Гбайт (для Delphi 1 длина записи ограничивается 65 535 байтами). Для обеспечения максимальной скорости обмена данными рекомендуется задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт). Однако операции обмена данными с дисковыми устройствами в среде Windows кэшируются, то есть осуществляются через промежуточный буфер памяти, поэтому обычно задают RecSize = 1, что позволяет обмениваться с файлом блоками любой длины, начиная с одного байта.
При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением процедур Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite:
Procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]) ;
Procedure BlockWrite(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]) ;
Здесь Buf — буфер: имя переменной, которая будет участвовать в обмене данными с дисками; Count — количество записей, которые должны быть прочитаны или записаны за одно обращение к диску; AmtTransferred — необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.
После завершения процедуры указатель смещается на Count записей. Процедурами Seek, FilePos и FileSize можно обеспечить доступ к любой записи нетипизированного файла.