ComObjFlags() [v1.0.96.00+]

COM 포장 객체의 행위를 제어하는 플래그를 열람하거나 바꿉니다.

Flags := ComObjFlags(ComObject [, NewFlags, Mask])

매개변수

ComObject

COM 포장 객체.

NewFlags

Mask로 식별되는 프래그에 대한 새 값, 또는 추가하거나 더할 플래그.

Mask

바꿀 비트마스크 플래그.

Flags

ComObject객체의 모든 플래그 (지정하면, NewFlags가 적용된 후의).

Flags

F_OWNVALUE
1
현재는 오직 SafeArrays에만 영향을 줍니다. 이 플래그가 설정되면, SafeArray는 포장 객체가 해제될 때 파괴됩니다. SafeArrays는 참조 횟수 세기 메커니즘이 없으므로, 만약 이 플래그를 가진 SafeArray가 또다른 SafeArray의 한 원소에 할당되면, 따로 사본이 생성됩니다.

총평

Mask를 생략하면, NewFlags는 (양수이면) 더할 플래그, (음수이면) 제거할 플래그를 지정합니다. 예를 들어, ComObjFlags(obj, -1)는 F_OWNVALUE 플래그를 제거합니다. Mask에는 0이나 1말고 다른 값을 지정하지 마십시오; 다른 모든 비트는 미래에 사용할 목적으로 예약되어 있습니다.

관련 항목

ComObjActive, ComObjArray

예제

; 예제: F_OWNVALUE 플그래가 있는지 점검합니다.

arr := ComObjArray(0xC, 1)
if ComObjFlags(arr) & 1
    MsgBox arr은 자동으로 파괴됩니다.
else
    MsgBox arr는 자동으로 파괴되지 않습니다.
; 예제: 배열-안의 배열 행위 바꾸기.

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"