Процедура 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 (зазвичай рядок або масив) з файлу. Якщо 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 — записує закінчений рядок даних у текстовий файл.
