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"