ComObjFlags() [v1.0.96.00+]

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

Flags := ComObjFlags(ComObject , NewFlags, Mask)

매개변수

ComObject

COM 포장 객체.

NewFlags

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

Mask

바꿀 비트마스크 플래그.

반환 값

This function returns the current flags of the specified COM object (after applying NewFlags, if specified).

Flags

Flag 효과
1 F_OWNVALUE. 현재는 오직 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"