指定されたアドレス+オフセットに、1つ以上の数値をバイナリ形式で格納します。
NumPut Type, Number, Type2, Number2, ... Target , Offset
型:文字列
以下の文字列のいずれか1つ:UInt、UInt64、Int、Int64、Short、UShort、Char、UChar、Double、Float、PtrまたはUPtr
すべての整数型、または純粋な整数を渡す場合、符号付き整数を表現するために2の補数を使用するため、符号付きと符号無しは結果に影響しません。
詳しくはDllCallの種類をご覧ください。
型:整数
保存する番号です。
Bufferのようなオブジェクトまたはメモリアドレス。
PtrプロパティとSizeプロパティを実装したオブジェクトであれば何でも使用できますが、この関数はネイティブのBufferオブジェクトに最適化されています。これらのプロパティを持つオブジェクトを渡すことで、関数が無効なメモリ位置に書き込まないようにします。そうすると、クラッシュやその他の予測不可能な動作の原因になります。
型:整数
省略したときの初期値は0です。そうでないときは、ターゲットアドレスを決定するためにTargetに追加されるオフセットをバイト単位で指定します。
型:整数
この関数は、最後に書き込まれた項目の右側のアドレスを返します。DllCallで使用する構造体のように、一部のフィールドが設定されていない、連続しない数値列を記述する場合に使用できます。しかし、多くの場合、代わりに複数のTypeとNumberのペアを指定する方がシンプルで効率的です。NumPutにアドレスを返すのは、Offsetを更新したBufferのようなオブジェクトを渡すよりも安全性に欠けます。
最初のNumberの後にTypeと Numberを任意の回数繰り返すことで、一連のNumberを記述することができます。各数値は、前の数値の次のバイトに、パディングなしで書き込まれます。DllCallで使用する構造体を作成する場合、データ配列の要件により、フィールドによっては明示的にパディングを追加する必要があることに留意してください。
整数が大きすぎて指定したTypeに収まらない場合、その最上位バイトは無視されます。例えば、NumPut("Char", 257, buf)
は数値1を格納する。
ターゲットアドレスが無効な場合、例外が発生することがあります。しかし、無効なアドレスの中には、それを検出できないものもあり、予測できない挙動を引き起こす可能性があります。アドレスの代わりにBufferオブジェクトを渡すことで、ターゲットアドレスが常に検証できるようになります。