ComObjFlags() [v1.0.96.00+]

Ermittelt oder ändert Flags, die das Verhalten eines COM-Wrapper-Objekts kontrollieren.

Flags := ComObjFlags(ComObject , NeueFlags, Maske)

Parameter

ComObject

Ein COM-Wrapper-Objekt.

NeueFlags

Neue Werte für die via Maske identifizierten Flags, oder Flags, die hinzugefügt oder entfernt werden sollen.

Maske

Eine Bitmaske von Flags, die geändert werden sollen.

Rückgabewert

Diese Funktion gibt die aktuellen Flags des angegebenen COM-Objekts zurück (nach Anwendung von NeueFlags, falls angegeben).

Flags

Flag Auswirkung
1 F_OWNVALUE. Funktioniert momentan nur mit SafeArrays. Wenn dieses Flag gesetzt ist, wird das SafeArray beim Freigeben des Wrapper-Objekts zerstört. Da SafeArrays keinen Mechanismus zum Zählen von Referenzen haben, wird eine separate Kopie erstellt, wenn ein Element eines anderen SafeArrays ein SafeArray mit diesem Flag zugewiesen bekommt.

Allgemeine Bemerkungen

Lässt man Maske weg, können Flags via NeueFlags hinzugefügt (falls positiv) oder entfernt (falls negativ) werden. ComObjFlags(obj, -1) beispielsweise entfernt das F_OWNVALUE-Flag. Momentan kann Maske nur 0 oder 1 sein; alle anderen Bits sind für die zukünftige Verwendung reserviert.

ComObjActive(), ComObjArray()

Beispiele

Überprüft, ob das F_OWNVALUE-Flag vorhanden ist.

arr := ComObjArray(0xC, 1)
if ComObjFlags(arr) & 1
    MsgBox arr wird automatisch zerstört.
else
    MsgBox arr wird nicht automatisch zerstört.

Ändert das Array-in-Array-Verhalten.

arr1 := ComObjArray(0xC, 3)
arr2 := ComObjArray(0xC, 1)
arr2[0] := "originaler Wert"
arr1[0] := arr2         ; Implizite Kopie zuweisen.
ComObjFlags(arr2, -1)   ; F_OWNVALUE entfernen.
arr1[1] := arr2         ; Originale Array zuweisen.
arr1[2] := arr2.Clone() ; Explizite Kopie zuweisen.
arr2[0] := "neuer Wert"
for arr in arr1
    MsgBox % arr[0]

arr1 := ""
; Ungültig, da arr2 == arr1[1], das zerstört wurde: 
;  arr2[0] := "foo"