Процедура BlockWrite в Delphi записує блок записів даних у нетипізований двійковий файл.
System unit
procedure BlockWrite (var FileHandle : File; var Buffer; RecordCount : Integer {;var RecordsWritten : Integer});
Процедура BlockWrite використовується для запису RecordCount записів даних з Buffer до нетипізованого двійкового файлу, вказаного в FileHandle.
Файл повинен бути призначений за допомогою AssignFile і відкритий за допомогою Reset або ReWrite.
Підпрограми Reset і ReWrite за замовчуванням відкриють файл із розміром запису 128 байт. Це можна замінити в цих процедурах на значення, яке буде більш корисним для вас (див. приклад).
Дані беруться з буфера Buffer (зазвичай це рядок або масив байтів) і записуються у файл. Якщо recordSize дорівнює 10 байтам, а RecordCount дорівнює 3, то 3 записи по 10 байт займатимуть 30 байт, записаними у файл.
Фактична кількість записаних записів зберігається у додатковій змінній RecordsWritten. Вона буде меншою за RecordCount, якщо, наприклад, заповнився жорсткий диск.
Процедура BlockWrite: Запис трьох 4-байтових записів у 2-х блочних записів у двійковий файл
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 байт
// Заповнення масиву даних із різними даними
for i := 1 to 4 do
byteArray[i] := i*i; // Значення : 1, 4, 9, 16
// Запис тільки перших 4 елементів з масиву даних у файл
BlockWrite(myFile, byteArray, 1); // Запис 1 запису з 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
1
4
9
16
Подібні функції, процедури та команди
BlockRead — читає блок записів даних із нетипізованого двійкового файлу.
File — визначає типізований чи нетипізований файл.
Read — дозволяє прочитати дані з двійкового або текстового файлу.
ReadLn — дозволяє прочитати повний рядок даних із текстового файлу.
Write — записує дані до бінарного або текстового файлу.
WriteLn — записує закінчений рядок даних у текстовий файл.
