COleSafeArray, classe
Classe pour utiliser des tableaux de type et de dimension arbitraires.
Syntaxe
class COleSafeArray : public tagVARIANT
Membres
Constructeurs publics
Nom | Description |
---|---|
COleSafeArray ::COleSafeArray | Construit un objet COleSafeArray . |
Méthodes publiques
Nom | Description |
---|---|
COleSafeArray ::AccessData | Récupère un pointeur vers les données de tableau. |
COleSafeArray ::AllocData | Alloue de la mémoire pour le tableau. |
COleSafeArray ::AllocDescriptor | Alloue de la mémoire pour le descripteur de tableau sécurisé. |
COleSafeArray ::Attach | Donne le contrôle du tableau existant VARIANT à l’objet COleSafeArray . |
COleSafeArray ::Clear | Libère toutes les données dans le sous-jacent VARIANT . |
COleSafeArray ::Copy | Crée une copie d’un tableau existant. |
COleSafeArray ::Create | Crée un tableau sécurisé. |
COleSafeArray ::CreateOneDim | Crée un objet unidimensionnel COleSafeArray . |
COleSafeArray ::D estroy | Détruit un tableau existant. |
COleSafeArray ::D estroyData | Détruit les données dans un tableau sécurisé. |
COleSafeArray ::D estroyDescriptor | Détruit un descripteur d’un tableau sécurisé. |
COleSafeArray ::D etach | Détache le tableau VARIANT de l’objet COleSafeArray (afin que les données ne soient pas libérées). |
COleSafeArray ::GetByteArray | Copie le contenu du tableau sécurisé dans un CByteArray. |
COleSafeArray ::GetDim | Retourne le nombre de dimensions du tableau. |
COleSafeArray ::GetElement | Récupère un élément unique du tableau sécurisé. |
COleSafeArray ::GetElemSize | Retourne la taille, en octets, d’un élément d’un tableau sécurisé. |
COleSafeArray ::GetLBound | Retourne la limite inférieure pour n’importe quelle dimension d’un tableau sécurisé. |
COleSafeArray ::GetOneDimSize | Retourne le nombre d’éléments dans l’objet unidimensionnel COleSafeArray . |
COleSafeArray ::GetUBound | Retourne la limite supérieure pour n’importe quelle dimension d’un tableau sécurisé. |
COleSafeArray ::Lock | Incrémente le nombre de verrous d’un tableau et place un pointeur vers les données du tableau dans le descripteur de tableau. |
COleSafeArray ::P trOfIndex | Retourne un pointeur vers l’élément indexé. |
COleSafeArray ::P utElement | Affecte un élément unique dans le tableau. |
COleSafeArray ::Redim | Modifie la limite la moins significative (la plus à droite) d’un tableau sécurisé. |
COleSafeArray ::ResizeOneDim | Modifie le nombre d’éléments dans un objet unidimensionnel COleSafeArray . |
COleSafeArray ::UnaccessData | Décrémente le nombre de verrous d’un tableau et invalide le pointeur récupéré par AccessData . |
COleSafeArray ::Unlock | Décrémente le nombre de verrous d’un tableau afin qu’il puisse être libéré ou redimensionné. |
Opérateurs publics
Nom | Description |
---|---|
COleSafeArray ::operator LPCVARIANT | Accède à la structure sous-jacente VARIANT de l’objet COleSafeArray . |
COleSafeArray ::operator LPVARIANT | Accède à la structure sous-jacente VARIANT de l’objet COleSafeArray . |
COleSafeArray ::operator = | Copie les valeurs dans un COleSafeArray objet (SAFEARRAY , VARIANT , COleVariant ou COleSafeArray tableau). |
COleSafeArray ::operator == | Compare deux tableaux de variantes (SAFEARRAY , VARIANT , COleVariant ou COleSafeArray tableaux). |
COleSafeArray::operator << |
Génère le contenu d’un COleSafeArray objet vers le contexte de vidage. |
Notes
COleSafeArray
dérive de la structure OLE VARIANT
. Les fonctions membres OLE SAFEARRAY
sont disponibles via COleSafeArray
, ainsi qu’un ensemble de fonctions membres spécifiquement conçues pour des tableaux unidimensionnels d’octets.
Hiérarchie d'héritage
tagVARIANT
COleSafeArray
Spécifications
En-tête : afxdisp.h
COleSafeArray ::AccessData
Récupère un pointeur vers les données de tableau.
void AccessData(void** ppvData);
Paramètres
ppvData
Pointeur vers un pointeur vers les données du tableau.
Notes
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
Exemple
void CMainFrame::Sort(VARIANT* vArray)
{
COleSafeArray sa;
BSTR* pbstr;
TCHAR buf[1024];
LONG cElements, lLBound, lUBound;
//needed for OLE2T macro below, include afxpriv.h
USES_CONVERSION;
// Type check VARIANT parameter. It should contain a BSTR array
// passed by reference. The array must be passed by reference it is
// an in-out-parameter.
if (V_VT(vArray) != (VT_ARRAY | VT_BSTR))
{
AfxThrowOleDispatchException(1001,
_T("Type Mismatch in Parameter. Pass a string array by reference"));
}
// clears data in sa and copies the variant data into sa
sa.Attach(*vArray);
// Check that array is 1 dimensional
if (sa.GetDim() != 1)
{
AfxThrowOleDispatchException(1002,
_T("Type Mismatch in Parameter. Pass a one-dimensional array"));
}
try
{
// Get array bounds.
sa.GetLBound(1, &lLBound);
sa.GetUBound(1, &lUBound);
// Get a pointer to the elements of the array
// and increments the lock count on the array
sa.AccessData((LPVOID*)& pbstr);
//get no. of elements in array
cElements = lUBound - lLBound + 1;
for (int i = 0; i < cElements; i++)
{
//output the elements of the array
_stprintf_s(buf, 1024, _T("[%s]\n"), OLE2T(pbstr[i]));
OutputDebugString(buf);
}
//decrement lock count
sa.UnaccessData();
}
catch (COleException* pEx)
{
AfxThrowOleDispatchException(1003,
_T("Unexpected Failure in FastSort method"));
pEx->Delete();
}
}
COleSafeArray ::AllocData
Alloue de la mémoire pour un tableau sécurisé.
void AllocData();
Notes
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::AllocDescriptor
Alloue de la mémoire pour le descripteur d’un tableau sécurisé.
void AllocDescriptor(DWORD dwDims);
Paramètres
dwDims
Nombre de dimensions dans le tableau sécurisé.
Notes
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::Attach
Donne le contrôle des données d’un tableau existant VARIANT
à l’objet COleSafeArray
.
void Attach(VARIANT& varSrc);
Paramètres
varSrc
Objet VARIANT
. Le paramètre varSrc doit avoir la VT_ARRAY VARTYPE.
Notes
Le type de la source VARIANT
est défini sur VT_EMPTY. Cette fonction efface les données de tableau actuelles, le cas échéant.
Exemple
Consultez l’exemple de COleSafeArray ::AccessData.
COleSafeArray ::Clear
Efface le tableau sécurisé.
void Clear();
Notes
La fonction efface un tableau sécurisé en définissant l’objet VARTYPE
sur VT_EMPTY. Le contenu actuel est libéré et le tableau est libéré.
COleSafeArray ::COleSafeArray
Construit un objet COleSafeArray
.
COleSafeArray();
COleSafeArray(
const SAFEARRAY& saSrc,
VARTYPE vtSrc);
COleSafeArray(
LPCSAFEARRAY pSrc,
VARTYPE vtSrc);
COleSafeArray(const COleSafeArray& saSrc);
COleSafeArray(const VARIANT& varSrc);
COleSafeArray(LPCVARIANT pSrc);
COleSafeArray(const COleVariant& varSrc);
Paramètres
saSrc
Objet existant COleSafeArray
ou SAFEARRAY
à copier dans le nouvel COleSafeArray
objet.
vtSrc
VARTYPE du nouvel COleSafeArray
objet.
psaSrc
Pointeur vers un SAFEARRAY
à copier dans le nouvel COleSafeArray
objet.
varSrc
Objet ou COleVariant
existant VARIANT
à copier dans le nouvel COleSafeArray
objet.
pSrc
Pointeur vers un VARIANT
objet à copier dans le nouvel COleSafeArray
objet.
Notes
Tous ces constructeurs créent de nouveaux COleSafeArray
objets. S’il n’existe aucun paramètre, un objet vide COleSafeArray
est créé (VT_EMPTY). Si l’objet COleSafeArray
est copié à partir d’un autre tableau dont VARTYPE est connu implicitement (a COleSafeArray
, COleVariant
ou VARIANT
), le VARTYPE du tableau source est conservé et ne doit pas être spécifié. Si l’objet COleSafeArray
est copié à partir d’un autre tableau dont VARTYPE n’est pas connu (SAFEARRAY
), le VARTYPE doit être spécifié dans le paramètre vtSrc .
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::Copy
Crée une copie d’un tableau sécurisé existant.
void Copy(LPSAFEARRAY* ppsa);
Paramètres
ppsa
Pointeur vers un emplacement dans lequel retourner le nouveau descripteur de tableau.
Notes
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::Create
Alloue et initialise les données du tableau.
void Create(
VARTYPE vtSrc,
DWORD dwDims,
DWORD* rgElements);
void Create(
VARTYPE vtSrc,
DWORD dwDims,
SAFEARRAYBOUND* rgsabounds);
Paramètres
vtSrc
Type de base du tableau (autrement dit, VARTYPE de chaque élément du tableau). Le VARTYPE est limité à un sous-ensemble des types de variantes. Ni le VT_ARRAY ni l’indicateur de VT_BYREF ne peuvent être définis. VT_EMPTY et VT_NULL ne sont pas des types de base valides pour le tableau. Tous les autres types sont juridiques.
dwDims
Nombre de dimensions dans le tableau. Cela peut être modifié une fois le tableau créé avec Redim.
rgElements
Pointeur vers un tableau du nombre d’éléments pour chaque dimension du tableau.
rgsabounds
Pointeur vers un vecteur de limites (un pour chaque dimension) à allouer pour le tableau.
Notes
Cette fonction efface les données de tableau actuelles si nécessaire. En cas d’erreur, la fonction lève une exception CMemoryException.
Exemple
COleSafeArray saMatrix;
DWORD numElements[] = { 10, 5 };
// creates a 2 dimensional safearray of type VT_I2
// with size 10x5 elements, with all indices starting at 0(default)
saMatrix.Create(VT_I2, 2, numElements);
ASSERT(saMatrix.GetDim() == 2);
COleSafeArray saVector;
SAFEARRAYBOUND rgsabounds[] = { {5, 2} };
// creates a 1 dimensional safearray of type VT_I1
// with size 5 elements, with the index starting at 2
saVector.Create(VT_I1, 1, rgsabounds);
ASSERT(saVector.GetDim() == 1);
COleSafeArray ::CreateOneDim
Crée un objet unidimensionnel COleSafeArray
.
void CreateOneDim(
VARTYPE vtSrc,
DWORD dwElements,
const void* pvSrcData = NULL,
long nLBound = 0);
Paramètres
vtSrc
Type de base du tableau (autrement dit, VARTYPE de chaque élément du tableau).
dwElements
Nombre d’éléments dans le tableau. Cela peut être modifié une fois le tableau créé avec ResizeOneDim.
pvSrcData
Pointeur vers les données à copier dans le tableau.
nLBound
Limite inférieure du tableau.
Notes
La fonction alloue et initialise les données du tableau, en copiant les données spécifiées si le pointeur pvSrcData n’est pas NULL.
En cas d’erreur, la fonction lève une exception CMemoryException.
Exemple
VARIANT varColInfo[3];
//initialize VARIANTs
for (int i = 0; i < 3; i++)
VariantInit(&varColInfo[i]);
// Column Name
varColInfo[0].vt = VT_BSTR;
varColInfo[0].bstrVal = ::SysAllocString(L"Name");
// Column Type
varColInfo[1].vt = VT_UI4;
varColInfo[1].lVal = 1;
COleSafeArray sa;
//create a 1 dimensional safearray of VARIANTs
//& initialize it with varColInfo VARIANT array
sa.CreateOneDim(VT_VARIANT, 2, varColInfo);
//check that the dimension is 2
ASSERT(sa.GetOneDimSize() == 2);
//increase safearray size by 1
sa.ResizeOneDim(3);
// populate the last element of the safearray, (Column Size)
varColInfo[2].vt = VT_I4;
varColInfo[2].lVal = 30;
long el = 2;
sa.PutElement(&el, &varColInfo[2]);
COleSafeArray ::D estroy
Détruit un descripteur de tableau existant et toutes les données du tableau.
void Destroy();
Notes
Si des objets sont stockés dans le tableau, chaque objet est libéré. En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::D estroyData
Détruit toutes les données d’un tableau sécurisé.
void DestroyData();
Notes
Si des objets sont stockés dans le tableau, chaque objet est libéré. En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::D estroyDescriptor
Détruit un descripteur d’un tableau sécurisé.
void DestroyDescriptor();
Notes
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
COleSafeArray ::D etach
Détache les VARIANT
données de l’objet COleSafeArray
.
VARIANT Detach();
Valeur de retour
Valeur sous-jacente VARIANT
dans l’objet COleSafeArray
.
Notes
La fonction détache les données d’un tableau sécurisé en définissant le VARTYPE de l’objet sur VT_EMPTY. Il incombe à l’appelant de libérer le tableau en appelant la fonction Windows VariantClear.
En cas d’erreur, la fonction lève une exception COleException.
Exemple
Consultez l’exemple de COleSafeArray ::P utElement.
COleSafeArray ::GetByteArray
Copie le contenu du tableau sécurisé dans un CByteArray
.
void GetByteArray(CByteArray& bytes);
Paramètres
bytes
Référence à un objet CByteArray .
COleSafeArray ::GetDim
Retourne le nombre de dimensions dans l’objet COleSafeArray
.
DWORD GetDim();
Valeur de retour
Nombre de dimensions dans le tableau sécurisé.
Exemple
COleSafeArray saMatrix;
DWORD numElements[] = { 10, 5 };
// creates a 2 dimensional safearray of type VT_I2
// with size 10x5 elements, with all indices starting at 0(default)
saMatrix.Create(VT_I2, 2, numElements);
ASSERT(saMatrix.GetDim() == 2);
COleSafeArray saVector;
SAFEARRAYBOUND rgsabounds[] = { {5, 2} };
// creates a 1 dimensional safearray of type VT_I1
// with size 5 elements, with the index starting at 2
saVector.Create(VT_I1, 1, rgsabounds);
ASSERT(saVector.GetDim() == 1);
COleSafeArray ::GetElement
Récupère un élément unique du tableau sécurisé.
void GetElement(
long* rgIndices,
void* pvData);
Paramètres
rgIndices
Pointeur vers un tableau d'index pour chaque dimension du tableau.
pvData
Pointeur vers l’emplacement pour placer l’élément du tableau.
Notes
Cette fonction appelle automatiquement les fonctions SafeArrayLock
Windows et SafeArrayUnlock
avant et après avoir récupéré l’élément. Si l’élément de données est une chaîne, un objet ou une variante, la fonction copie l’élément de la manière appropriée. Le paramètre pvData doit pointer vers une mémoire tampon suffisamment grande pour contenir l’élément.
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
Exemple
//sa is of type COleSafeArray with 2 dimensions
//Determine upper bounds for both dimensions
long lNumRows;
long lNumCols;
sa.GetUBound(1, &lNumRows);
sa.GetUBound(2, &lNumCols);
//Display the elements in the SAFEARRAY.
long index[2];
VARIANT val;
//Determine lower bounds for both dimensions
long lowRow, lowCol;
sa.GetLBound(1, &lowRow);
sa.GetLBound(2, &lowCol);
for (long r = lowRow; r <= lNumRows; r++)
{
for (long c = lowCol; c <= lNumCols; c++)
{
index[0] = r;
index[1] = c;
//retrieve each element of the safearray
sa.GetElement(index, &val);
switch (val.vt)
{
case VT_R8:
TRACE(_T("%1.2f\n"), val.dblVal);
break;
case VT_BSTR:
TRACE(_T("%s\n"), (CString)val.bstrVal);
break;
// other cases omitted
case VT_EMPTY:
TRACE(_T("<empty>\n"));
break;
}
}
}
COleSafeArray ::GetElemSize
Récupère la taille d’un élément dans un COleSafeArray
objet.
DWORD GetElemSize();
Valeur de retour
Taille, en octets, des éléments d’un tableau sécurisé.
COleSafeArray ::GetLBound
Retourne la limite inférieure pour n’importe quelle dimension d’un COleSafeArray
objet.
void GetLBound(
DWORD dwDim,
long* pLBound);
Paramètres
dwDim
Dimension de tableau pour laquelle obtenir la limite inférieure.
pLBound
Pointeur vers l’emplacement pour retourner la limite inférieure.
Notes
En cas d’erreur, la fonction lève une exception COleException.
Exemple
COleSafeArray saMatrix;
DWORD numElements[] = { 10, 5 };
// creates a 2 dimensional safearray of type VT_I2
// with size 10x5 elements, with all indices starting at 0(default)
saMatrix.Create(VT_I2, 2, numElements);
long lLBound;
//get lower bound for 1st dimension
saMatrix.GetLBound(1, &lLBound);
ASSERT(lLBound == 0);
//get lower for 2nd dimension
saMatrix.GetLBound(2, &lLBound);
ASSERT(lLBound == 0);
COleSafeArray saVector;
SAFEARRAYBOUND rgsabounds[] = { {5, 1} };
// creates a 1 dimensional safearray of type VT_I1
// with size 5 elements, with the index starting at 1
saVector.Create(VT_I1, 1, rgsabounds);
//get lower bound for 1st dimension
saVector.GetLBound(1, &lLBound);
ASSERT(lLBound == 1);
COleSafeArray ::GetOneDimSize
Retourne le nombre d’éléments dans l’objet unidimensionnel COleSafeArray
.
DWORD GetOneDimSize();
Valeur de retour
Nombre d’éléments dans le tableau sécurisé unidimensionnel.
Exemple
Consultez l’exemple de COleSafeArray ::CreateOneDim.
COleSafeArray ::GetUBound
Retourne la limite supérieure pour n’importe quelle dimension d’un tableau sécurisé.
void GetUBound(
DWORD dwDim,
long* pUBound);
Paramètres
dwDim
Dimension de tableau pour laquelle obtenir la limite supérieure.
pUBound
Pointeur vers l’emplacement pour retourner la limite supérieure.
Notes
En cas d’erreur, la fonction lève une exception COleException.
Exemple
COleSafeArray saMatrix;
DWORD numElements[] = { 10, 5 };
// creates a 2 dimensional safearray of type VT_I2
// with size 10x5 elements, with all indices starting at 0(default)
saMatrix.Create(VT_I2, 2, numElements);
long lUBound;
ASSERT(saMatrix.GetDim() == 2);
//get upper bound for 1st dimension
saMatrix.GetUBound(1, &lUBound);
ASSERT(lUBound == 9);
//get upper bound for 2nd dimension
saMatrix.GetUBound(2, &lUBound);
ASSERT(lUBound == 4);
COleSafeArray saVector;
SAFEARRAYBOUND rgsabounds[] = { {5, 1} };
// creates a 1 dimensional safearray of type VT_I1
// with size 5 elements, with the index starting at 1
saVector.Create(VT_I1, 1, rgsabounds);
//get upper bound for 1st dimension
saVector.GetUBound(1, &lUBound);
ASSERT(lUBound == 5);
COleSafeArray ::Lock
Incrémente le nombre de verrous d’un tableau et place un pointeur vers les données du tableau dans le descripteur de tableau.
void Lock();
Notes
En cas d’erreur, elle lève une exception COleException.
Le pointeur du descripteur de tableau est valide jusqu’à ce qu’il Unlock
soit appelé. Les appels à imbrication Lock
peuvent être imbriqués ; un nombre égal d’appels à être Unlock
requis.
Impossible de supprimer un tableau pendant qu’il est verrouillé.
COleSafeArray ::operator LPCVARIANT
Appelez cet opérateur de cast pour accéder à la structure sous-jacente VARIANT
de cet COleSafeArray
objet.
operator LPCVARIANT() const;
COleSafeArray ::operator LPVARIANT
Appelez cet opérateur de cast pour accéder à la structure sous-jacente VARIANT
de cet COleSafeArray
objet.
operator LPVARIANT();
Notes
Notez que la modification de la valeur dans la VARIANT
structure accessible par le pointeur retourné par cette fonction modifie la valeur de cet COleSafeArray
objet.
COleSafeArray ::operator =
Ces opérateurs d’affectation surchargés copient la valeur source dans cet COleSafeArray
objet.
COleSafeArray& operator=(const COleSafeArray& saSrc);
COleSafeArray& operator=(const VARIANT& varSrc);
COleSafeArray& operator=(LPCVARIANT pSrc);
COleSafeArray& operator=(const COleVariant& varSrc);
Notes
Une brève description de chaque opérateur suit :
operator =( saSrc ) Copie un objet existant
COleSafeArray
dans cet objet.operator =( varSrc ) Copie un tableau ou
COleVariant
existantVARIANT
dans cet objet.operator =( pSrc ) Copie l’objet
VARIANT
tableau accessible par pSrc dans cet objet.
COleSafeArray ::operator ==
Cet opérateur compare deux tableaux (SAFEARRAY
, VARIANT
, ou COleVariant
COleSafeArray
tableaux) et retourne un nombre différent de zéro s’ils sont égaux ; sinon, 0.
BOOL operator==(const SAFEARRAY& saSrc) const; BOOL operator==(LPCSAFEARRAY pSrc) const;
BOOL operator==(const COleSafeArray& saSrc) const; BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const; BOOL operator==(const COleVariant& varSrc) const;
Notes
Deux tableaux sont égaux s’ils ont un nombre égal de dimensions, une taille égale dans chaque dimension et des valeurs d’élément égales.
COleSafeArray::operator <<
L’opérateur d’insertion (<<) prend en charge le COleSafeArray
dumping de diagnostic et le stockage d’un COleSafeArray
objet dans une archive.
CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
COleSafeArray& saSrc);
COleSafeArray ::P trOfIndex
Retourne un pointeur vers l’élément spécifié par les valeurs d’index.
void PtrOfIndex(
long* rgIndices,
void** ppvData);
Paramètres
rgIndices
Tableau de valeurs d’index qui identifient un élément du tableau. Tous les index de l’élément doivent être spécifiés.
ppvData
Lors du retour, pointeur vers l’élément identifié par les valeurs dans rgIndices.
COleSafeArray ::P utElement
Affecte un élément unique dans le tableau.
void PutElement(
long* rgIndices,
void* pvData);
Paramètres
rgIndices
Pointeur vers un tableau d'index pour chaque dimension du tableau.
pvData
Pointeur vers les données à affecter au groupe. VT_DISPATCH, VT_UNKNOWN et VT_BSTR types de variantes sont des pointeurs et ne nécessitent pas un autre niveau d’indirection.
Notes
Cette fonction appelle automatiquement les fonctions Windows SafeArrayLock et SafeArrayUnlock avant et après l’attribution de l’élément. Si l'élément de données est une chaîne, un objet ou un variant, la fonction le copie correctement ; si l'élément existant est une chaîne, un objet ou un variant, il est effacé correctement.
Il est à noter qu'un tableau peut avoir plusieurs verrous. Il est donc possible de placer des éléments dans un tableau pendant que le tableau est verrouillé par d'autres opérations.
En cas d’erreur, la fonction lève une exception CMemoryException ou COleException.
Exemple
VARIANT retVariantArray()
{
COleSafeArray saRet;
DWORD numElements[] = { 10, 10 }; // 10x10
// Create the 2 dimensional safe-array of type VT_R8 with size 10x10
saRet.Create(VT_R8, 2, numElements);
// Initialize safearray with values...
long index[2];
for (index[0] = 0; index[0] < 10; index[0]++)
{
for (index[1] = 0; index[1] < 10; index[1]++)
{
double val = index[0] + index[1] * 10;
//populate the safearray elements with double values
saRet.PutElement(index, &val);
}
}
// Return the safe-array encapsulated in a VARIANT...
return saRet.Detach();
}
COleSafeArray ::Redim
Modifie la limite la moins significative (la plus à droite) d’un tableau sécurisé.
void Redim(SAFEARRAYBOUND* psaboundNew);
Paramètres
psaboundNew
Pointeur vers une nouvelle structure liée au tableau sécurisée contenant la nouvelle limite de tableau. Seule la dimension la moins importante d’un tableau peut être modifiée.
Notes
En cas d’erreur, la fonction lève une exception COleException.
COleSafeArray ::ResizeOneDim
Modifie le nombre d’éléments dans un objet unidimensionnel COleSafeArray
.
void ResizeOneDim(DWORD dwElements);
Paramètres
dwElements
Nombre d’éléments dans le tableau sécurisé unidimensionnel.
Notes
En cas d’erreur, la fonction lève une exception COleException.
Exemple
Consultez l’exemple de COleSafeArray ::CreateOneDim.
COleSafeArray ::UnaccessData
Décrémente le nombre de verrous d’un tableau et invalide le pointeur récupéré par AccessData
.
void UnaccessData();
Notes
En cas d’erreur, la fonction lève une exception COleException.
Exemple
Consultez l’exemple de COleSafeArray ::AccessData.
COleSafeArray ::Unlock
Décrémente le nombre de verrous d’un tableau afin qu’il puisse être libéré ou redimensionné.
void Unlock();
Notes
Cette fonction est appelée après l’accès aux données d’un tableau. En cas d’erreur, elle lève une exception COleException.
Voir aussi
Graphique hiérarchique
COleVariant, classe
CRecordset, classe
CDatabase, classe