System.BlockRead

提供: RAD Studio API Documentation
移動先: 案内検索

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 番目のパラメータによって決まります。 アプリケーションでは、ストリームを使用することをお勧めします。 たとえば、ストリームを扱うユーザー プロシージャでは、これらの古いルーチンのようにファイルしか使用できないのではなく、TMemoryStreamsTFileStreams を使用することができます。


F は型指定のないファイル変数、Buf は任意の変数、Count は Integer 型の式、Result は Integer 型のオプションの変数です。

BlockRead は、ファイル F から Count 個(またはそれ以下)のレコードを読み取り、Buf の最初のバイト以降のメモリに格納します。 実際に読み取った完全なレコードの数(Count 以下)が Result に返されます。

転送されるブロック全体のサイズは、最大で Count * RecSize バイトです。 この RecSize は、ファイルを開くときに指定されたレコード サイズです(レコード サイズの指定がなければ 128 になります)。

ブロック全体が転送された場合、ResultCount と等しくなります。

ResultCount より小さい場合、BlockRead は転送が完了する前にファイルの末尾に到達しています。 ファイルのレコード サイズが 1 より大きい場合には、読み取った完全なレコードの数が Result に返されます。

Result が指定されていないと、読み取ったレコードの数が Count と等しくない場合に入出力エラーが発生します。 {$I+} コンパイラ指令が有効であれば、エラーが生じると EInOutError 例外が発生します。

関連項目

コード サンプル