Delphi-Help

BlockWrite

Печать
Рейтинг пользователей: / 0
ХудшийЛучший 

BlockWrite

Описание

Процедура BlockWrite используется для записи RecordCount записей данных из Buffer в нетипизированный двоичный файл, указанного в FileHandle.
Файл, должно быть, был назначен, используя AssignFile и открыт с помощью Reset или ReWrite.
Подпрограмма Reset и ReWrite по умолчанию открывает файл с размером записи равной 128 байт. Этот размер может быть изменён в этой подпрограмме в значение, более полезное для вас (см. пример).
Данные записываются из Buffer (обычно строка или byte массив) в файл. Если recordSize 10 байт, и RecordCount 3, то 3 записи по 10 байт будут занимать 30 байт, записанными в файл.
Фактический число записанных записей сохраняется в дополнительной переменной RecordsWritten. Она будет меньше чем RecordCount, если, например, заполнился жесткий диск.

Пример кода

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]));
// Now read one byte at a time to the end of the file
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

Примечание

Авторизация



Счетчики