[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'System' (#rtl)

# BlockRead

Read data from an untyped file into memory

## Declaration

Source position: systemh.inc line 1282

`procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: Int64;`
`var Result: Int64`
`); procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: LongInt;`
`var Result: LongInt`
`); procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: Cardinal;`
`var Result: Cardinal`
`); procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: Word;`
`var Result: Word`
`); procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: Word;`
`var Result: Integer`
`); procedure BlockRead(`
`var f: file;`
`var Buf;`
`count: Int64`
`);`

## Description

Blockread reads count or less records from file F. A record is a block of bytes with size specified by the Rewrite or Reset statement. The result is placed in Buffer, which must contain enough room for Count records. The function cannot read partial records. If Result is specified, it contains the number of records actually read. If Result isn't specified, and less than Count records were read, a run-time error is generated. This behavior can be controlled by the {$I} switch.

## Errors

Depending on the state of the {$I} switch, a runtime error can be generated if there is an error. In the {$I-} state, use IOResult to check for errors.

## See also

Blockwrite |  | Write data from memory to an untyped file
Close |  | Close a file
Reset |  | Open file for reading
Assign |  | Assign a name to a file

## Example

    Program Example6;

    { Program to demonstrate the BlockRead and BlockWrite functions. }

    Var Fin, fout : File;
        NumRead,NumWritten : Word;
        Buf : Array[1..2048] of byte;
        Total : Longint;

    begin
      Assign (Fin, Paramstr(1));
      Assign (Fout,Paramstr(2));
      Reset (Fin,1);
      Rewrite (Fout,1);
      Total:=0;
      Repeat
        BlockRead (Fin,buf,Sizeof(buf),NumRead);
        BlockWrite (Fout,Buf,NumRead,NumWritten);
        inc(Total,NumWritten);
      Until (NumRead=0) or (NumWritten<>NumRead);
      Write ('Copied ',Total,' bytes from file ',paramstr(1));
      Writeln (' to file ',paramstr(2));
      close(fin);
      close(fout);
    end.