Процедура BlockRead в Delphi читает блок записей данных из нетипизированного двоичного файла.
System unit
procedure BlockRead (var FileHandle : File; var Buffer; RecordCount : Integer {;var RecordsRead : Integer});
Процедура BlockRead используется для чтения RecordCount записей данных в Buffer из нетипизированного двоичного файла, данного FileHandle.
Файл должен быть назначен используя AssignFile и открыт с помощью Reset.
Подпрограмма Reset по умолчанию открывает файл с размером записи равной 128 байт. Этот размер может быть изменён в этой подпрограмме в значение, более полезное для вас (см. пример).
Данные записываются в Buffer (обычно строка или byte массив) из файла. Если RecordSize 10 байт, и RecordCount 3, то 3 записи по 10 байт будут занимать 30 байт, взятыми из файла.
Фактический число считанных записей сохраняется в дополнительной переменной RecordsRead. Она будет меньше чем RecordCount, если, например, был достигнут конец файла.
Процедура BlockRead: Чтение данных от двоичного файла по одному байту за один раз
var
myFile : File;
byteArray : array[1..8] of byte;
oneByte : byte;
i, count : Integer;
begin
// Попытка открыть файл Test.byt для записи
AssignFile(myFile, 'Test.byt');
ReWrite(myFile, 4); // Определение отдельной 'записи' как 4 байта
// Заполнение массива данными
for i := 1 to 8 do
byteArray[i] := i;
// Запись данных массива в файл
BlockWrite(myFile, byteArray, 2); // Запись 2 'записи' из 4 байт
//Закрытие файла
CloseFile(myFile);
// Повторное открытие файла для чтения
FileMode := fmOpenRead;
Reset(myFile, 1); // Теперь мы определяем одну запись как 1 байт
// Показ содержимого файла
// Чтение первых 6 байт. 'count' установлен в
// текущий считанный номер
ShowMessage('Чтение первого набора байтов :');
BlockRead(myFile, byteArray, 6, count);
// Показ считанных значений байта
for i := 1 to count do
ShowMessage(IntToStr(byteArray[i]));
// Теперь читаем один байт за один раз и так до конца файла
ShowMessage('Чтение остающихся байтов :');
while not Eof(myFile) do
begin
BlockRead(myFile, oneByte, 1); // Чтение одного байта за один раз
ShowMessage(IntToStr(oneByte));
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Результат
Чтение первого набора байтов :
1
2
3
4
5
6
Чтение остающихся байтов :
7
8
Похожие функции, процедуры и команды
BlockWrite — записывает блок записей данных в нетипизированный двоичный файл.
File — определяет типизированный или нетипизированный файл.
Read — позволяет прочитать данные из двоичного или текстового файла.
ReadLn — позволяет прочитать полную строку данных из текстового файла.
Reset — открывает текстовый файл для чтения, или двоичный файл для чтения/записи.
Write — записывает данные в бинарный или текстовый файл.
WriteLn — записывает законченную строку данных в текстовый файл.
