10.01.2021
Новый выпуск журнала Автоматизация и Программирование.
08.12.2020
Новые видео и статья Таблицы в HTML.
03.12.2020
Новый выпуск журнала Автоматизация и Программирование.
15.11.2020
Новые видео и статья Процедура Str.
25.10.2020
Добавлен курс Как стать веб-разработчиком.
Раздел: Стандартные функции Паскаля
Процедура 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.

Подписаться на канал в YouTube
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
![]() |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |