Définition du champ d’étiquette de type
Les variables de type VARIANT ont un champ de balise de type vt qui indique le type de données des données. Les valeurs de retour de type VARIANT sont retournées par des méthodes avec le champ de balise de type défini sur le type de données de la valeur de retour. Les paramètres d’entrée de type VARIANT dans un appel de méthode doivent avoir le champ de balise de type défini par l’application sur l’une des valeurs prises en charge. La correspondance des types de paramètres aux types de données est la suivante.
Type de paramètre | Type de données |
---|---|
PROPTYPE_LONG |
VT_I2 ou VT_I4 |
PROPTYPE_DATE |
VT_DATE |
PROPTYPE_BINARY |
VT_BSTR ou (VT_BSTR | VT_BYREF) |
PROPTYPE_STRING |
VT_BSTR ou (VT_BSTR | VT_BYREF) |
L’exemple suivant montre comment initialiser les types de données variant répertoriés ci-dessus.
HRESULT hr;
VARIANT vEMail;
VARIANT vNotBefore;
VARIANT vCount;
VARIANT vByRef;
BSTR bstr = NULL;
SYSTEMTIME st;
//Set the BSTR variant data type.
VariantInit(&vEMail);
vEMail.vt = VT_BSTR;
vEMail.bstrVal = SysAllocString(L"someone@example.com");
if (NULL == vEMail.bstrVal)
{
hr = E_OUTOFMEMORY;
//Handle error.
}
//Use the variant.
VariantClear(&vEMail); //when done
//Set the BSTR|BYREF variant data type.
VariantInit(&vByRef);
vByRef.vt = VT_BSTR | VT_BYREF;
vByRef.pbstrVal = &bstr;
//Use the variant.
VariantClear(&vByRef); //when done
SysFreeString(bstr);
//Set the DATE variant data type.
memset(&st, 0, sizeof(SYSTEMTIME));
st.wYear = 2000;
st.wMonth = 1;
st.wDay = 1;
st.wHour = 12;
VariantInit(&vNotBefore);
vNotBefore.vt = VT_DATE;
if (!SystemTimeToVariantTime(&st, &vNotBefore.date))
{
hr = E_FAIL;
//Handle error.
}
//Use the variant.
VariantClear(&vNotBefore); //when done
//Set the LONG variant data type.
VariantInit(&vCount);
vCount.vt = VT_I4;
vCount.long = 123456;
//Use the variant.
VariantClear(&vCount); //when done
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour