Compartilhar via


Classe COleSafeArray

Uma classe para trabalhar com matrizes de dimensão e tipo arbitrários.

Sintaxe

class COleSafeArray : public tagVARIANT

Membros

Construtores públicos

Nome Descrição
COleSafeArray::COleSafeArray Constrói um objeto COleSafeArray.

Métodos públicos

Nome Descrição
COleSafeArray::AccessData Recupera um ponteiro para os dados de matriz.
COleSafeArray::AllocData Aloca memória para a matriz.
COleSafeArray::AllocDescriptor Aloca memória para o descritor de matriz segura.
COleSafeArray::Attach Fornece o controle da matriz VARIANT existente para o objeto COleSafeArray.
COleSafeArray::Clear Libera todos os dados na VARIANT subjacente.
COleSafeArray::Copy Cria uma cópia de uma matriz existente.
COleSafeArray::Create Cria uma matriz segura.
COleSafeArray::CreateOneDim Cria um objeto COleSafeArray unidimensional.
COleSafeArray::Destroy Destrói uma matriz existente.
COleSafeArray::DestroyData Destrói dados em uma matriz segura.
COleSafeArray::DestroyDescriptor Destrói um descritor de uma matriz segura.
COleSafeArray::Detach Desanexa a matriz VARIANT do objeto COleSafeArray (para que os dados não sejam liberados).
COleSafeArray::GetByteArray Copia o conteúdo da matriz segura em um CByteArray.
COleSafeArray::GetDim Retorna o número de dimensões na matriz.
COleSafeArray::GetElement Recupera um único elemento da matriz segura.
COleSafeArray::GetElemSize Retorna o tamanho, em bytes, de um elemento em uma matriz segura.
COleSafeArray::GetLBound Retorna o limite inferior para qualquer dimensão de uma matriz segura.
COleSafeArray::GetOneDimSize Retorna o número de elementos no objeto COleSafeArray unidimensional.
COleSafeArray::GetUBound Retorna o limite superior para qualquer dimensão de uma matriz segura.
COleSafeArray::Lock Incrementa a contagem de bloqueios de uma matriz e coloca um ponteiro para os dados da matriz no descritor da matriz.
COleSafeArray::PtrOfIndex Retorna um ponteiro para o elemento indexado.
COleSafeArray::PutElement Atribui um único elemento à matriz.
COleSafeArray::Redim Altera o limite menos significativo (à direita) de uma matriz segura.
COleSafeArray::ResizeOneDim Altera o número de elementos em um objeto COleSafeArray unidimensional.
COleSafeArray::UnaccessData Diminui a contagem de bloqueios de uma matriz e invalida o ponteiro recuperado por AccessData.
COleSafeArray::Unlock Decrementa a contagem de bloqueios de uma matriz para que ela possa ser liberada ou redimensionada.

Operadores públicos

Nome Descrição
COleSafeArray::operator LPCVARIANT Acessa a estrutura VARIANT subjacente do objeto COleSafeArray.
COleSafeArray::operator LPVARIANT Acessa a estrutura VARIANT subjacente do objeto COleSafeArray.
COleSafeArray::operator = Copia valores em um objeto COleSafeArray (matriz SAFEARRAY, VARIANT, COleVariant ou COleSafeArray).
COleSafeArray::operator == Compara duas matrizes de variante (matrizes SAFEARRAY, VARIANT, COleVariant ou COleSafeArray).
COleSafeArray::operator << Gera o conteúdo de um objeto COleSafeArray para o contexto de despejo.

Comentários

COleSafeArray deriva da estrutura VARIANT OLE. As funções de membro SAFEARRAY OLE estão disponíveis por meio de COleSafeArray, bem como um conjunto de funções de membro especificamente criadas para matrizes unidimensionais de bytes.

Hierarquia de herança

tagVARIANT

COleSafeArray

Requisitos

Cabeçalho afxdisp.h

COleSafeArray::AccessData

Recupera um ponteiro para os dados de matriz.

void AccessData(void** ppvData);

Parâmetros

ppvData
Um ponteiro para um ponteiro para os dados da matriz.

Comentários

No erro, a função gera um CMemoryException ou COleException.

Exemplo

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

Aloca memória para uma matriz segura.

void AllocData();

Comentários

No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::AllocDescriptor

Aloca memória para o descritor de uma matriz segura.

void AllocDescriptor(DWORD dwDims);

Parâmetros

dwDims
Número de dimensões na matriz segura.

Comentários

No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::Attach

Fornece o controle dos dados em uma matriz VARIANT existente para o objeto COleSafeArray.

void Attach(VARIANT& varSrc);

Parâmetros

varSrc
Um objeto VARIANT. O parâmetro varSrc deve ter o VARTYPE VT_ARRAY.

Comentários

O tipo do VARIANT de origem está definido como VT_EMPTY. Essa função limpa os dados da matriz atual, se houver.

Exemplo

Confira o exemplo de COleSafeArray::AccessData.

COleSafeArray::Clear

Limpa a matriz segura.

void Clear();

Comentários

A função limpa uma matriz segura, definindo o objeto VARTYPE como VT_EMPTY. O conteúdo atual e a matriz são liberados.

COleSafeArray::COleSafeArray

Constrói um objeto 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);

Parâmetros

saSrc
Um objeto COleSafeArray existente ou o SAFEARRAY a ser copiado no novo objeto COleSafeArray.

vtSrc
O VARTYPE do novo objeto COleSafeArray.

psaSrc
Um ponteiro para um SAFEARRAY a ser copiado no novo objeto COleSafeArray.

varSrc
Um objeto VARIANT ou COleVariant existente a ser copiado no novo objeto COleSafeArray.

pSrc
Um ponteiro para um objeto VARIANT a ser copiado no novo objeto COleSafeArray.

Comentários

Todos esses construtores criam novos objetos COleSafeArray. Se não houver parâmetro, um objeto vazio COleSafeArray será criado (VT_EMPTY). Se for COleSafeArray copiado de outra matriz cujo VARTYPE é conhecido implicitamente (um COleSafeArray, COleVariant ou VARIANT), o VARTYPE da matriz de origem será retido e não precisará ser especificado. Se o COleSafeArray for copiado de outra matriz cujo VARTYPE não é conhecido (SAFEARRAY), o VARTYPE deverá ser especificado no parâmetro vtSrc.

No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::Copy

Cria uma cópia de uma matriz segura existente.

void Copy(LPSAFEARRAY* ppsa);

Parâmetros

ppsa
Ponteiro para um local em que o novo descritor da matriz deve ser retornado.

Comentários

No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::Create

Aloca e inicializa os dados para a matriz.

void Create(
    VARTYPE vtSrc,
    DWORD dwDims,
    DWORD* rgElements);

void Create(
    VARTYPE vtSrc,
    DWORD dwDims,
    SAFEARRAYBOUND* rgsabounds);

Parâmetros

vtSrc
O tipo base da matriz (ou seja, o VARTYPE de cada elemento da matriz). O VARTYPE é restrito a um subconjunto dos tipos de variante. Nem o VT_ARRAY nem o sinalizador VT_BYREF podem ser definidos. VT_EMPTY e VT_NULL não são tipos de base válidos para a matriz. Todos os outros tipos são legais.

dwDims
Número de dimensões na matriz. Isso pode ser alterado depois que a matriz for criada com o Redim.

rgElements
Ponteiro para uma matriz do número de elementos para cada dimensão na matriz.

rgsabounds
Ponteiro para um vetor de limites (um para cada dimensão) a ser alocado para a matriz.

Comentários

Essa função limpará os dados da matriz atual, se necessário. No erro, a função gera um CMemoryException.

Exemplo

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

Cria um novo objeto COleSafeArray unidimensional.

void CreateOneDim(
    VARTYPE vtSrc,
    DWORD dwElements,
    const void* pvSrcData = NULL,
    long nLBound = 0);

Parâmetros

vtSrc
O tipo base da matriz (ou seja, o VARTYPE de cada elemento da matriz).

dwElements
Número de elementos na matriz. Isso pode ser alterado depois que a matriz for criada com o ResizeOneDim.

pvSrcData
Ponteiro para os dados a serem copiados para a matriz.

nLBound
O limite inferior da matriz.

Comentários

A função aloca e inicializa os dados para a matriz, copiando os dados especificados se o ponteiro pvSrcData não for NULL.

No erro, a função gera um CMemoryException.

Exemplo

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::Destroy

Destrói um descritor da matriz existente e todos os dados na matriz.

void Destroy();

Comentários

Se os objetos forem armazenados na matriz, cada objeto será liberado. No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::DestroyData

Destrói todos os dados em uma matriz segura.

void DestroyData();

Comentários

Se os objetos forem armazenados na matriz, cada objeto será liberado. No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::DestroyDescriptor

Destrói um descritor de uma matriz segura.

void DestroyDescriptor();

Comentários

No erro, a função gera um CMemoryException ou COleException.

COleSafeArray::Detach

Desanexa os dados VARIANT do objeto COleSafeArray.

VARIANT Detach();

Valor de retorno

O valor VARIANT subjacente no objeto COleSafeArray.

Comentários

A função desanexa os dados em uma matriz segura, definindo o VARTYPE do objeto como VT_EMPTY. O chamador é responsável por liberar a matriz, chamando a função do Windows VariantClear.

No erro, a função gera um COleException.

Exemplo

Confira o exemplo de COleSafeArray::PutElement.

COleSafeArray::GetByteArray

Copia o conteúdo da matriz segura em um CByteArray.

void GetByteArray(CByteArray& bytes);

Parâmetros

bytes
Uma referência a um objeto CByteArray.

COleSafeArray::GetDim

Retorna o número de dimensões no objeto COleSafeArray.

DWORD GetDim();

Valor de retorno

O número de dimensões na matriz segura.

Exemplo

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

Recupera um único elemento da matriz segura.

void GetElement(
    long* rgIndices,
    void* pvData);

Parâmetros

rgIndices
Ponteiro para uma matriz de índices para cada dimensão da matriz.

pvData
Ponteiro para o local em que o elemento da matriz deve ser colocado.

Comentários

Essa função chama automaticamente as funções do Windows SafeArrayLock e SafeArrayUnlock, antes e depois de recuperar o elemento. Se o elemento de dados for uma cadeia de caracteres, objeto ou variante, a função copiará o elemento da maneira correta. O parâmetro pvData deve apontar para um buffer grande o suficiente para conter o elemento.

No erro, a função gera um CMemoryException ou COleException.

Exemplo

//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

Recupera o tamanho de um elemento em um objeto COleSafeArray.

DWORD GetElemSize();

Valor de retorno

O tamanho, em bytes, dos elementos de uma matriz segura.

COleSafeArray::GetLBound

Retorna o limite inferior para qualquer dimensão de um objeto COleSafeArray.

void GetLBound(
    DWORD dwDim,
    long* pLBound);

Parâmetros

dwDim
A dimensão da matriz da qual obter o limite inferior.

pLBound
Ponteiro para o local o limite inferior deve ser retornado.

Comentários

No erro, a função gera um COleException.

Exemplo

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

Retorna o número de elementos no objeto COleSafeArray unidimensional.

DWORD GetOneDimSize();

Valor de retorno

O número de elementos na matriz segura unidimensional.

Exemplo

Confira o exemplo de COleSafeArray::CreateOneDim.

COleSafeArray::GetUBound

Retorna o limite superior para qualquer dimensão de uma matriz segura.

void GetUBound(
    DWORD dwDim,
    long* pUBound);

Parâmetros

dwDim
A dimensão da matriz da qual obter o limite superior.

pUBound
Ponteiro para o local o limite superior deve ser retornado.

Comentários

No erro, a função gera um COleException.

Exemplo

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

Incrementa a contagem de bloqueios de uma matriz e coloca um ponteiro para os dados da matriz no descritor da matriz.

void Lock();

Comentários

No erro, isso gera um COleException.

O ponteiro no descritor da matriz é válido até que Unlock seja chamado. As chamadas para Lock pode ser aninhadas. É necessário um número igual de chamadas para Unlock.

Uma matriz não pode ser excluída enquanto estiver bloqueada.

COleSafeArray::operator LPCVARIANT

Chame esse operador de conversão para acessar a estrutura VARIANT subjacente desse objeto COleSafeArray.

operator LPCVARIANT() const;

COleSafeArray::operator LPVARIANT

Chame esse operador de conversão para acessar a estrutura VARIANT subjacente desse objeto COleSafeArray.

operator LPVARIANT();

Comentários

Observe que alterar o valor na estrutura VARIANT acessada pelo ponteiro retornado por essa função alterará o valor desse objeto COleSafeArray.

COleSafeArray::operator =

Esses operadores de atribuição sobrecarregados copiam o valor de origem nesse objeto COleSafeArray.

COleSafeArray& operator=(const COleSafeArray& saSrc);
COleSafeArray& operator=(const VARIANT& varSrc);
COleSafeArray& operator=(LPCVARIANT pSrc);
COleSafeArray& operator=(const COleVariant& varSrc);

Comentários

Uma breve descrição de cada operador é mostrada abaixo:

  • operator =( saSrc ) Copia um objeto existente COleSafeArray para este objeto.

  • operator =( varSrc ) Copia um existente VARIANT ou COleVariant array para este objeto.

  • operator =( pSrc ) Copia o VARIANT objeto de matriz acessado por pSrc para este objeto.

COleSafeArray::operator ==

Esse operador compara duas matrizes (matrizes SAFEARRAY, VARIANT, COleVariant ou COleSafeArray) e retorna um valor diferente de zero, se elas forem iguais. Caso contrário, 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;

Comentários

Duas matrizes serão iguais, se tiverem um número igual de dimensões, tamanho igual em cada dimensão e valores de elementos iguais.

COleSafeArray::operator <<

O operador de inserção COleSafeArray (<<) dá suporte ao despejo de diagnóstico e ao armazenamento de um objeto COleSafeArray em uma camada de arquivos.

CDumpContext& AFXAPI operator<<(
    CDumpContext& dc,
    COleSafeArray& saSrc);

COleSafeArray::PtrOfIndex

Retorna um ponteiro para o elemento especificado pelos valores de índice.

void PtrOfIndex(
    long* rgIndices,
    void** ppvData);

Parâmetros

rgIndices
Uma matriz de valores de índice que identificam um elemento da matriz. Todos os índices do elemento devem ser especificados.

ppvData
No retorno, ponteiro para o elemento identificado pelos valores em rgIndices.

COleSafeArray::PutElement

Atribui um único elemento à matriz.

void PutElement(
    long* rgIndices,
    void* pvData);

Parâmetros

rgIndices
Ponteiro para uma matriz de índices para cada dimensão da matriz.

pvData
Ponteiro para os dados a serem atribuídos à matriz. VT_DISPATCH, VT_UNKNOWN e tipos de variante VT_BSTR são ponteiros e não exigem outro nível de indireção.

Comentários

Essa função chama automaticamente as funções do Windows SafeArrayLock e SafeArrayUnlock, antes e depois de atribuir o elemento. Se o elemento de dados for uma cadeia de caracteres, objeto ou variante, a função o copiará corretamente e, se o elemento existente for uma cadeia de caracteres, objeto ou variante, ele será limpo corretamente.

Observe que você pode ter vários bloqueios em uma matriz, para que você possa colocar elementos em uma matriz, enquanto a matriz estiver bloqueada por outras operações.

No erro, a função gera um CMemoryException ou COleException.

Exemplo

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

Altera o limite menos significativo (à direita) de uma matriz segura.

void Redim(SAFEARRAYBOUND* psaboundNew);

Parâmetros

psaboundNew
Ponteiro para uma nova estrutura associada à matriz segura que contém o novo limite de matriz. Somente a dimensão menos significativa de uma matriz pode ser alterada.

Comentários

No erro, a função gera um COleException.

COleSafeArray::ResizeOneDim

Altera o número de elementos em um objeto COleSafeArray unidimensional.

void ResizeOneDim(DWORD dwElements);

Parâmetros

dwElements
Número de elementos na matriz segura unidimensional.

Comentários

No erro, a função gera um COleException.

Exemplo

Confira o exemplo de COleSafeArray::CreateOneDim.

COleSafeArray::UnaccessData

Diminui a contagem de bloqueios de uma matriz e invalida o ponteiro recuperado por AccessData.

void UnaccessData();

Comentários

No erro, a função gera um COleException.

Exemplo

Confira o exemplo de COleSafeArray::AccessData.

COleSafeArray::Unlock

Decrementa a contagem de bloqueios de uma matriz para que ela possa ser liberada ou redimensionada.

void Unlock();

Comentários

Essa função é chamada depois que o acesso aos dados em uma matriz é concluído. No erro, isso gera um COleException.

Confira também

Gráfico da hierarquia
Classe COleVariant
Classe CRecordset
Classe CDatabase