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