Согласие на обработку персональных данных.

15.12.2018
Новая задача Как преобразовать байт в килобайт.

05.12.2018
Новые видео и статья Параграфы и выравнивание текста в HTML.

01.12.2018
Новый выпуск журнала Автоматизация и программирование.

26.11.2018
Новые видео и статья Функция Concat.

25.11.2018
Новые видео и статья Справка в Lazarus.



Раздел: Стандартные функции Паскаля

Процедура BlockRead

Процедура BlockRead читает данные из нетипизированного файла в память. Синтаксис:

 
procedure BlockRead(var f: file; var Buf; 
                    count: Int64; var Result: Int64);

procedure BlockRead(var f: file; var Buf;
                    count: LongInt; var Result: LongInt);

procedure BlockRead(var f: file; var Buf;
                    count: Cardinal; var Result: Cardinal);

procedure BlockRead(var f: file; var Buf;
                    count: Word; var Result: Word);

procedure BlockRead(var f: file; var Buf;
                    count: Word; var Result: Integer);

procedure BlockRead(var f: file; var Buf;
                    count: Int64);

Процедура Blockread считывает записи из файла F. Количество записей указано в параметре Count. Процедура считывает столько записей, сколько указано в этом параметре (или меньше, если файл содержит меньшее количество записей).

Запись - это блок байтов. Размер этого блока указывается при вызове процедур Rewrite или Reset.

Прочитанные данные помещаются в буфер Buf. Размер этого буфера должен быть достаточным для того, чтобы в нём поместилось столько записей, сколько указано в параметре Count.

Процедура не может считывать неполные записи (то есть записи, размер которых меньше, чем указан при вызове процедур Rewrite или Reset).

Если указан параметр Result, то он содержит количество фактически прочитанных записей. Если параметр Result не указан и было прочитано меньше записей, чем указано в Count, то происходит ошибка времени выполнения. Этим поведением можно управлять с помощью переключателя {$I}.

В зависимости от состояния переключателя {$I} при наличии ошибки может возникнуть ошибка времени выполнения. В состоянии {$I-} используйте функцию IOResult для проверки ошибок. Подробнее о директивах компилятора см. здесь.

Пример программы:

 
program blockreadproc;

uses SysUtils;          //Подключить этот модуль !!!

const REC_COUNT = 32;
      REC_SIZE = 4;

type TRecs = array[1..REC_COUNT*REC_SIZE] of byte;

var fin       : file;   //Файл для чтения по блокам
    fout      : file;   //Файл для записи по блокам
    NumRead   : WORD;
    Buf       : TRecs;
    i         : BYTE;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Assign(fout, 'data.txt');
  Assign(fin,  'data.txt');
  for i := 1 to REC_COUNT*REC_SIZE do
    Buf[i] := i;

  Rewrite(fout, REC_SIZE);
  BlockWrite(fout, Buf, REC_COUNT, NumRead);
  Close(fout);
  WriteLn('Written ', NumRead * REC_SIZE, ' bytes into file data.txt');
  Reset(fin, REC_SIZE);
  BlockRead(fin, Buf, REC_COUNT, NumRead);
  Close(fin);
  WriteLn('Read ', NumRead * REC_SIZE, ' bytes into file data.txt:');

  for i := 1 to REC_COUNT*REC_SIZE do
    begin
      if (Buf[i] mod 16) = 0 then
        WriteLn(IntToHex(Buf[i], 2))
      else
        if (Buf[i] mod 2) = 0 then
          Write(IntToHex(Buf[i], 2), ' ')
        else
          Write(IntToHex(Buf[i], 2));
    end;

  ReadLn;
end.

Процедура BlockRead


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика