COMラッパーオブジェクトの動作を制御するフラグを取得または変更します。
Flags := ComObjFlags(ComObj , NewFlags, Mask)
型:オブジェクト
COM ラッパーオブジェクト。詳しくはComValueをご覧ください。
型:整数
Maskで識別されるフラグの新しい値、または追加または削除するフラグ。
型:整数
変更するフラグのビットマスクです。
型:整数
この関数は、指定された COM オブジェクトの現在のフラグ(指定された場合、NewFlagsを適用した後)を返します。
ComObjがCOMラッパーオブジェクトでない場合、TypeErrorが投げられる。
| フラグ | 効果 |
|---|---|
| 1 |
F_OWNVALUE SafeArray:このフラグが設定されている場合、SafeArrayはラッパーオブジェクトが解放される際に破棄されます。SafeArrayには参照カウントの仕組みがないため、このフラグを持つSafeArrayが他のSafeArrayの要素に割り当てられると、別のコピーが作成されます。 BSTR:このフラグが設定されている場合、BSTRはラッパーオブジェクトが解放される際に解放されます。 |
Maskが省略された場合、NewFlagsは、追加するフラグ(正の場合)または削除するフラグ(負の場合)を指定します。例えば、ComObjFlags(obj, -1)は、F_OWNVALUEフラグを削除します。Maskには0または1以外の値を指定しないでください。他のすべてのビットは将来の使用のために予約されています。
ComValue、ComObjActive、ComObjArray
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"