ComObjFlags

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

Flags := ComObjFlags(ComObj , NeueFlags, Maske)

Parameter

ComObj

Typ: Objekt

Ein COM-Wrapper-Objekt. Weitere Informationen finden Sie unter ComValue.

NeueFlags

Typ: Integer

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

Maske

Typ: Integer

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

Rückgabewert

Typ: Integer

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

Fehlerbehandlung

Es wird ein TypeError ausgelöst, wenn ComObj kein COM-Wrapper-Objekt ist.

Flags

Flag Effekt
1

F_OWNVALUE

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

BSTR: Wenn das Flag gesetzt ist, wird der BSTR beim Freigeben des Wrapper-Objekts freigegeben. Das Flag wird automatisch gesetzt, wenn ein BSTR als Ergebnis einer Typenumwandlung, die von ComValue durchgeführt wurde, reserviert wird, z.B. ComValue(8, "Beispiel").

Bemerkungen

Wenn Maske weggelassen wird, können Flags via NeueFlags hinzugefügt (falls positiv) oder entfernt (falls negativ) werden. Zum Beispiel entfernt ComObjFlags(obj, -1) das F_OWNVALUE-Flag. Geben Sie für Maske keinen anderen Wert als 0 oder 1 an; alle anderen Bits sind für zukünftige Zwecke reserviert.

ComValue, ComObjActive, ComObjArray

Beispiele

Prü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"