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 Effekt
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, wenn ein SafeArray mit diesem Flag einem Element eines anderen SafeArrays zugewiesen wird, eine separate Kopie erstellt.

Allgemeine 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.

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"