System.BlockWrite

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

Delphi

procedure BlockWrite(var F: File; const Buf; Count: Integer); overload;
procedure BlockWrite(var F: File; const Buf; Count: Integer; var Result: Integer); overload;

プロパティ

種類 可視性 ソース ユニット
procedure public System.pas System System


説明

1 つ以上のレコードを変数から、開いているファイルに書き込みます。

警告:これは古いメソッドであり、パラメータに型が指定されておらずメモリ破損が生じる可能性があるため、使用するのは非常に危険です。 BlockWrite および BlockRead で使われるレコード サイズは、書き込み対象のファイルを開くために使用した Reset または Rewrite の呼び出しに対する任意指定の 2 番目のパラメータによって決まります。 アプリケーションでは、ストリームを使用することをお勧めします。 たとえば、ストリームを扱うユーザー プロシージャでは、これらの古いルーチンのようにファイルしか使用できないのではなく、TMemoryStreamsTFileStreams を使用することができます。

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

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

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

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

ResultCount より小さい場合、転送が完了する前にディスクがいっぱいになっています。 このとき、ファイルのレコード サイズが 1 より大きい場合には、書き込んだ完全なレコードの数が Result に返されます。

BlockWrite は、現在のファイル位置を Result レコードだけ進めます。

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

関連項目

コード サンプル