System.BlockRead
Delphi
function BlockRead(var F: File; var Buf; Count: Integer; [var Result: Integer]): Integer; overload;
function BlockRead(var F: File; var Buf; Count: Integer; [var Result: Integer]): Integer; overload;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.pas | System | System |
説明
開いているファイルから 1 つ以上のレコードを読み取って変数に格納します。
警告:これは古いメソッドであり、
Buf
パラメータに型が指定されておらずメモリ破損が生じる可能性があるため、使用するのは非常に危険です。 BlockRead および BlockWrite で使われるレコード サイズは、書き込み対象のファイルを開くために使用した Reset または Rewrite の呼び出しに対する任意指定の 2 番目のパラメータによって決まります。 アプリケーションでは、ストリームを使用することをお勧めします。 たとえば、ストリームを扱うユーザー プロシージャでは、これらの古いルーチンのようにファイルしか使用できないのではなく、TMemoryStreams と TFileStreams を使用することができます。
F
は型指定のないファイル変数、Buf
は任意の変数、Count
は Integer 型の式、Result
は Integer 型のオプションの変数です。
BlockRead は、ファイル F
から Count
個(またはそれ以下)のレコードを読み取り、Buf
の最初のバイト以降のメモリに格納します。 実際に読み取った完全なレコードの数(Count
以下)が Result
に返されます。
転送されるブロック全体のサイズは、最大で Count
* RecSize バイトです。 この RecSize は、ファイルを開くときに指定されたレコード サイズです(レコード サイズの指定がなければ 128 になります)。
ブロック全体が転送された場合、Result
は Count
と等しくなります。
Result
が Count
より小さい場合、BlockRead は転送が完了する前にファイルの末尾に到達しています。 ファイルのレコード サイズが 1 より大きい場合には、読み取った完全なレコードの数が Result
に返されます。
Result
が指定されていないと、読み取ったレコードの数が Count
と等しくない場合に入出力エラーが発生します。 {$I+} コンパイラ指令が有効であれば、エラーが生じると EInOutError 例外が発生します。
関連項目
- BlockWrite
- ストリームを使ってデータの読み書きを行う
- ストリーム、リーダー、ライター
- ファイル入出力のサポート
- Delphi 組み込みルーチン
- TFileStream
- TStreamReader
- TStreamWriter
- EInOutError
- Rewrite
- Reset
- AssignFile
- CloseFile