System.BlockWrite
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 番目のパラメータによって決まります。 アプリケーションでは、ストリームを使用することをお勧めします。 たとえば、ストリームを扱うユーザー プロシージャでは、これらの古いルーチンのようにファイルしか使用できないのではなく、TMemoryStreams と TFileStreams を使用することができます。
F
は型指定のないファイル変数、Buf
は任意の変数、Count
は Integer 型の式、Result
は Integer 型のオプションの変数です。
BlockWrite は、Buf
の最初のバイト以降のメモリから Count
個(またはそれ以下)のレコードを取り出し、ファイル F
に書き込みます。 実際に書き込んだ完全なレコードの数(Count
以下)が Result
に返されます。
転送されるブロック全体のサイズは、最大で Count
* RecSize バイトです。 この RecSize は、ファイルを開くときに指定されたレコード サイズです(レコード サイズの指定がなければ 128 になります)。
ブロック全体が転送された場合、返される Result
は Count
と等しくなります。
Result
が Count
より小さい場合、転送が完了する前にディスクがいっぱいになっています。 このとき、ファイルのレコード サイズが 1 より大きい場合には、書き込んだ完全なレコードの数が Result
に返されます。
BlockWrite は、現在のファイル位置を Result
レコードだけ進めます。
Result
が指定されていないと、書き込んだレコードの数が Count
と等しくない場合に入出力エラーが発生します。 {$I+} コンパイラ指令が有効であれば、エラーが生じると EInOutError 例外が発生します。