Ermittelt oder ändert Flags, die das Verhalten eines COM-Wrapper-Objekts kontrollieren.
Flags := ComObjFlags(ComObj , NeueFlags, Maske)
Typ: Objekt
Ein COM-Wrapper-Objekt. Weitere Informationen finden Sie unter ComValue.
Typ: Integer
Neue Werte für die via Maske identifizierten Flags, oder Flags, die hinzugefügt oder entfernt werden sollen.
Typ: Integer
Eine Bitmaske von Flags, die geändert werden sollen.
Typ: Integer
Diese Funktion gibt die aktuellen Flags des angegebenen COM-Objekts zurück (nach Anwendung von NeueFlags, falls angegeben).
Es wird ein TypeError ausgelöst, wenn ComObj kein COM-Wrapper-Objekt ist.
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. |
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
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"