VariantClear

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Löscht eine Variante.

HRESULT VariantClear(
  VARIANTARG  *pvarg
);

Parameter

  • pvarg
    Zeiger auf der VARIANTARG deaktivieren.

Rückgabewert

Der Rückgabewert vom zurückgegebenen HRESULT ist eine der folgenden.

Wert

Bedeutung

S_OK

Erfolg.

DISP_E_ARRAYISLOCKED

Die Variante enthält ein Array, das gesperrt ist.

DISP_E_BADVARTYPE

Der Varianttyp pvarg ist keinen gültigen Typ Variant.

E_INVALIDARG

Eines der Argumente ist ungültig.

Kommentare

Verwenden Sie diese Funktion, um Variablen des Typs VARIANTARG (bzw. VARIANT) bevor der Speicher mit der VARIANTARG freigegeben wird (wie bei eine lokale Variablen Gültigkeitsbereich verlässt) deaktivieren.

Die Funktion löscht eine VARIANTARG durch das Feld vt auf VT_EMPTY festgelegt. Den aktuellen Inhalt von der VARIANTARG werden zunächst freigegeben. If the vtfield is VT_BSTR, the string is freed. If the vtfield is VT_DISPATCH, the object is released. Wenn das Feld vt die VT_ARRAY bit festgelegt wurde, wird das Array freigegeben.

If the variant to be cleared is a COM object that is passed by reference, the vtfield of the pvargparameter is VT_DISPATCH | VT_BYREF or VT_UNKNOWN | VT_BYREF. VariantClear wird in diesem Fall nicht das Objekt freigegeben. Da die Variante gelöscht wird ein Zeiger auf einen Verweis auf ein Objekt ist, hat VariantClear keine Möglichkeit zum Bestimmen, ob es erforderlich, das Objekt frei ist. Es ist daher die Verantwortung der Aufrufer das Objekt freizugeben oder nicht, je nach Bedarf.

In bestimmten Fällen kann es eine Variante im Code deaktivieren, ohne Aufruf von VariantClear vorzuziehen. Beispielsweise können Sie den Typ der Variante VT_I4 in einen anderen Typ ändern, ohne diese Funktion aufrufen. Safearrays der BSTR wird SysFreeString für jedes Element nicht VariantClear aufgerufen haben. Allerdings müssen Sie VariantClear aufrufen, wenn eine VT_type empfangen wird aber kann nicht verarbeitet werden. Safearrays von Variant zudem haben VariantClear für jedes Element aufgerufen. Wird mithilfe von VariantClear in diesen Fällen sichergestellt, dass Code wird so arbeiten, Automatisierung neue Variante-Typen in Zukunft hinzugefügt werden.

Verwenden Sie keine VariantClear nicht initialisiertes Varianten;Verwenden Sie VariantInit, um eine neue VARIANTARG oder VARIANT zu initialisieren.

Varianten mit Arrays mit ausstehenden Verweise können nicht gelöscht werden. Versuche, dazu werden ein HRESULT mit DISP_E_ARRAYISLOCKED zurückgegeben.

Beispiel

for(i = 0; i < celt; ++i)
   VariantClear(&rgvar[i]);

Siehe auch

Konzepte

Variant zum Bearbeiten von Funktionen