ComObjFlags

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

Flags := ComObjFlags(ComObj , NewFlags, Mask)

パラメータ

ComObj

型:オブジェクト

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

NewFlags

型:整数

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

Mask

型:整数

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

戻り値

型:整数

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

エラー処理

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

フラグ

フラグ 効果
1

F_OWNVALUE

SafeArray:このフラグが設定されている場合、SafeArrayはラッパーオブジェクトが解放される際に破棄されます。SafeArrayには参照カウントの仕組みがないため、このフラグを持つSafeArrayが他のSafeArrayの要素に割り当てられると、別のコピーが作成されます。

BSTR:このフラグが設定されている場合、BSTRはラッパーオブジェクトが解放される際に解放されます。ComValue(8, "example")のようにComValueで型変換を行った結果、BSTRが確保された場合に自動的に設定されるフラグです。

備考

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

ComValueComObjActiveComObjArray

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"