BlockRead, процедура
Синтаксис
procedure BlockRead(var F: File; var Buffer; Count: Integer);
procedure BlockRead(var F: File; var Buffer; Count: Integer;
var RecordCount: Integer);
Описание
Процедуру BlockRead вызывают для того, чтобы прочитать в Buffer Count записей
из двоичного файла. Если F - нетипизированный файл, BlockRead использует размер
записи, указанный при открытии файла процедурой Reset. Если вы указываете переменную
RecordCount, BlockRead записывает в нее количество фактически прочитанных записей.
В случае ошибки или конца файла, RecordCount может быть меньше, чем Count. BlockRead
не является настоящей процедурой.
Ошибки
- Если аргумент RecordCount не указан, и функция BlockRead столкнулась
с ошибкой или концом файла, возникает ошибка ввода/вывода 100.
- Если файл не открыт, BlockRead выдает ошибку ввода/вывода 103.
Советы и приемы
- Аргумент Buffer - это не указатель, а нетипизированный var-napaметр.
Передавайте саму переменную, а не ее адрес. Если вы передаете указатель
на динамически выделенный буфер, разыменуйте ссылку при вызове BlockRead.
- Чаще всего BlockRead применяется для чтения сразу нескольких записей
или сложных структур данных, которые не удается аккуратно записать в простой
типизированный файл. Предположим, что первые четыре байта файла содержат
длину строки, а непосредственно за ними следует сама строка, и вы хотите
прочитать эти данные в длинную строку. В таком случае придется читать длину
строки и ее содержимое по отдельности, как показано в примере.
Пример
//Чтение строки из двоичного файла.
// Строка начинается с четырехбайтовой длины.
function ReadString(var F: File): string; var
Len: Longlnt;
begin BlockRead(F, Len, SizeOf(Len));
SetLength(Result, Len);
if Len > 0 then BlockRead(F. Result[1], Len); end;
Смотрите также
Процедуры Assign,BlockWrite,
CloseFile, Reset,
Rewrite, функцияIOResult,
Нет комментариев.
Оставить комментарий:
|
|