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,
 
 
 Нет комментариев. 
  
 
Оставить комментарий:
 |   
 |