BlockWrite (процедура)

Язык:
Русский
English

 BlockWrite (процедура)


Записывает одну или большее количество записей из переменной в файл.

Объявление

 Procedure BlockWrite(Var F : File; Var Buf; Count : Word
                                     [; Var Result : Word]);

Где:

   F      нетипизированная файловая переменная
   Buf    любая переменная
   Count  выражение типа Word
   Result переменная типа Word

Target

Windows, Real, Protected

Замечания

Процедура BlockWrite записывает Count или меньшее количество записей в файл F из блока памяти, начинающегося с первого байта, занятого переменной Buf. Реальное количество записанных записей (меньшее или равное Count) возвращается в необязательном параметре Result. Если параметр Result не определен, то в случае, когда количество прочитанных записей не равно параметру Count, происходит ошибка ввода/вывода.

Весь записанный блок занимает максимум Count * RecSize байт, где RecSize - размер записи, определяемый при открытии файла (или 128 байт, если размер записи не был определен). Если Count * RecSize больше, чем 64Кб, то происходит ошибка.

Параметр Result является необязательным. Если весь запрошенный блок был записан, то Result будет равно Count. Иначе, в случае, если Result меньше, чем Count, то диск заполнился до завершения записи блока. В таком случае, если параметр RecSize был больше 1, то Result вернет количество целиком записанных записей.

Указатель текущей позиции файла перемещается на количество записей, равное значению параметра Result.

В режиме {$I-} функция IOResult вернет нуль, если операция была успешной, иначе она вернет отличный от нуля код ошибки.

Ограничения

Файл должен быть открыт.

Смотри также

Пример

Язык:
Русский
English


 { Пример программы для процедур BlockRead и BlockWrite }

program CopyFile;

uses Crt;

{ Простая программа быстрого копирования файлов БЕЗ проверки ошибок }

var
  FromF, ToF          : File;
  NumRead, NumWritten : Word;
  Buf                 : array[1 .. 2048] of Char;
begin
 { Открываем входной файл }
  Assign(FromF, ParamStr(1));
  FileMode := 0;    { Режим только-чтение }
 Reset(FromF, 1);  { Размер буфера записи = 1 байт }
 { Открываем выходной файл }
  Assign(ToF, ParamStr(2));
 ReWrite(ToF, 1);  { Размер буфера записи = 1 байт }
 WriteLn('Копирую ', FileSize(FromF), ' байт...');
 repeat
   BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
   BlockWrite(ToF, Buf, NumRead, NumWritten);
 until (NumRead = 0) or (NumWritten <> NumRead);
 Close(FromF);
 Close(ToF);
end.
Тэги: BlockWrite
| G+
Код для вставки: :: :: :: ::
Поделиться: // //