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, COleVariantou COleSafeArray tableau).
COleSafeArray ::operator == Compare deux tableaux de variantes (SAFEARRAY, VARIANT, COleVariantou 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 VARIANTest 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, COleVariantou 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 existant VARIANT 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 COleVariantCOleSafeArray 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