BlockWrite, процедура

Синтаксис


procedure BlockWrite(var F:  File;  var Buffer;  Count:  Integer); 
procedure BlockWrite(var F:  File;  var Buffer;  Count:  Integer;
   var RecordCount:  Integer);

Описание

Процедура BlockWrite записывает Count записей из Buffer в двоичный файл. Если переменная RecordCount указана в аргументах процедуры, то BlockWrite сохраняет в ней количество фактически добавленных записей. Если диск переполнен или возникла другая ошибка, RecordCount может быть меньше Count. BiockWrite не является настоящей процедурой.

Ошибки

  • Если указан аргумент RecordCount и в BlockWrite возникает ошибка, выдается ошибка ввода/вывода 101 или код ошибки Windows.
  • Если файл не был открыт, BlockWrite выдает ошибку ввода/вывода 103

Советы и приемы

  • Аргумент Buffer - это не указатель, а нетипизированный var-napaметр. Передавайте саму переменную, а не ее адрес. Если в программе есть указатель на динамически выделенный буфер разыменуйте ссылку при вызове BlockWrite.
  • Чаще всего BlockWrite используется для записи нескольких записей одновременно и для сохранения сложных структур данных, которые не удается аккуратно записать в простой типизированный файл. Чтобы записать, например, длинную строку, сначала записывается длина строки в виде четырехбайтового двоичного значения, а затем содержимое строки.

Пример


// Запись строки в двоичный файл. Перед строкой записывается
// ее длина в виде четырехбайтового целого.
procedure WriteString(var F: File; const Str: string);
var
Len: Longlnt; begin
Len := Length(Str);
BlockWrite(F, Len, SizeOf(Len));
if Len > 0 then
BlockWrite(F, Str[1],J, Len); end;

Смотрите также

Процедуры Append, AssignFile, BlockRead, CloseFile, Reset, Rewrite, функция IOResult,
    Учебник по языку Pascal          Лабораторные работы по программированию          Справочник

Реклама