ComObjFlags

COMラッパーオブジェクトの動作を制御するフラグを取得または変更します。

Flags := ComObjFlags(ComObj , NewFlags, Mask)

パラメータ

ComObj

型:Object

COM ラッパーオブジェクト。詳しくはComValueをご覧ください。

NewFlags

型:整数

Maskで識別されるフラグの新しい値、または追加または削除するフラグ。

Mask

型:整数

変更するフラグのビットマスクです。

戻り値

型:整数

この関数は、指定された COM オブジェクトの現在のフラグ(指定された場合、NewFlagsを適用した後)を返します。

エラー処理

ComObjがCOMラッパーオブジェクトでない場合、TypeErrorが投げられる。

Flags

Flag 効果
1

F_OWNVALUE

SafeArray: If the flag is set, the SafeArray is destroyed when the wrapper object is freed. SafeArrayには参照カウントの仕組みがないため、このフラグを持つSafeArrayが他のSafeArrayの要素に割り当てられると、別のコピーが作成されます。

BSTR: If the flag is set, the BSTR is freed when the wrapper object is freed. ComValue(8, "example")のようにComValueで型変換を行った結果、BSTRが確保された場合に自動的に設定されるフラグです。

備考

Maskが省略された場合、NewFlagsは、追加するフラグ(正の場合)または削除するフラグ(負の場合)を指定します。例えば、ComObjFlags(obj, -1)は、F_OWNVALUEフラグを削除します。Maskには0または1以外の値を指定しないでください。他のすべてのビットは将来の使用のために予約されています。

ComValue, ComObjActive, ComObjArray

F_OWNVALUEフラグがあるかどうかをチェックします。

arr := ComObjArray(0xC, 1)
if ComObjFlags(arr) & 1
    MsgBox "arr will be automatically destroyed."
else
    MsgBox "arr will not be automatically destroyed."

アレイインアレイの動作を変更します。

arr1 := ComObjArray(0xC, 3)
arr2 := ComObjArray(0xC, 1)
arr2[0] := "original value"
arr1[0] := arr2         ; 暗黙のコピーを割り当てる。
ComObjFlags(arr2, -1)   ; F_OWNVALUEを削除します。
arr1[1] := arr2         ; 元の配列を割り当てる。
arr1[2] := arr2.Clone() ; 明示的なコピーを割り当てる。
arr2[0] := "new value"
for arr in arr1
    MsgBox arr[0]

arr1 := ""
; arr2 == arr1[1]が破壊されたので無効です。
;  arr2[0] := "foo"