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

Процедура BlockRead

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Процедура 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

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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