Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Een klasse voor het werken met matrices van willekeurig type en dimensie.
Syntaxis
class COleSafeArray : public tagVARIANT
Leden
Openbare constructors
| Naam | Description |
|---|---|
| COleSafeArray::COleSafeArray | Maakt een COleSafeArray object. |
Openbare methoden
| Naam | Description |
|---|---|
| COleSafeArray::AccessData | Hiermee wordt een aanwijzer naar de matrixgegevens opgehaald. |
| COleSafeArray::AllocData | Hiermee wordt geheugen toegewezen voor de matrix. |
| COleSafeArray::AllocDescriptor | Wijst geheugen toe voor de veilige matrixdescriptor. |
| COleSafeArray::Attach | Geeft controle over de bestaande VARIANT matrix aan het COleSafeArray object. |
| COleSafeArray::Clear | Hiermee worden alle gegevens in de onderliggende VARIANTgegevens vrijgemaakt. |
| COleSafeArray::Copy | Hiermee maakt u een kopie van een bestaande matrix. |
| COleSafeArray::Maken | Hiermee maakt u een veilige matrix. |
| COleSafeArray::CreateOneDim | Hiermee maakt u een eendimensionaal COleSafeArray object. |
| COleSafeArray::D estroy | Vernietigt een bestaande matrix. |
| COleSafeArray::D estroyData | Vernietigt gegevens in een veilige matrix. |
| COleSafeArray::D estroyDescriptor | Vernietigt een beschrijving van een veilige matrix. |
| COleSafeArray::D etach | De VARIANT-matrix loskoppelt van het COleSafeArray object (zodat de gegevens niet worden vrijgemaakt). |
| COleSafeArray::GetByteArray | Kopieert de inhoud van de veilige matrix naar een CByteArray. |
| COleSafeArray::GetDim | Geeft als resultaat het aantal dimensies in de matrix. |
| COleSafeArray::GetElement | Hiermee haalt u één element van de veilige matrix op. |
| COleSafeArray::GetElemSize | Retourneert de grootte, in bytes, van één element in een veilige matrix. |
| COleSafeArray::GetLBound | Retourneert de ondergrens voor elke dimensie van een veilige matrix. |
| COleSafeArray::GetOneDimSize | Retourneert het aantal elementen in het eendimensionale COleSafeArray object. |
| COleSafeArray::GetUBound | Retourneert de bovengrens voor elke dimensie van een veilige matrix. |
| COleSafeArray::Lock | Hiermee wordt het aantal vergrendelingen van een matrix verhoogd en wordt een aanwijzer naar de matrixgegevens in de matrixdescriptor geplaatst. |
| COleSafeArray::P trOfIndex | Retourneert een aanwijzer naar het geïndexeerde element. |
| COleSafeArray::P utElement | Hiermee wijst u één element toe aan de matrix. |
| COleSafeArray::Redim | Hiermee wijzigt u de minst significante (meest rechtse) grens van een veilige matrix. |
| COleSafeArray::ResizeOneDim | Hiermee wijzigt u het aantal elementen in een eendimensionaal COleSafeArray object. |
| COleSafeArray::UnaccessData | Hiermee wordt het aantal vergrendelingen van een matrix verminderd en wordt de aanwijzer ongeldig.AccessData |
| COleSafeArray::Unlock | Hiermee wordt het aantal vergrendelingen van een matrix verkleind, zodat deze kan worden vrijgemaakt of verkleind. |
Openbare operators
| Naam | Description |
|---|---|
| COleSafeArray::operator LPCVARIANT | Hiermee opent u de onderliggende VARIANT structuur van het COleSafeArray object. |
| COleSafeArray::operator LPVARIANT | Hiermee opent u de onderliggende VARIANT structuur van het COleSafeArray object. |
| COleSafeArray::operator = | Hiermee kopieert u waarden naar een COleSafeArray object (SAFEARRAY, VARIANT, COleVariantof COleSafeArray matrix). |
| COleSafeArray::operator == | Vergelijkt twee variantenmatrices (SAFEARRAY, VARIANT, COleVariantof COleSafeArray matrices). |
COleSafeArray::operator << |
Hiermee wordt de inhoud van een COleSafeArray object uitgevoerd naar de dumpcontext. |
Opmerkingen
COleSafeArray is afgeleid van de OLE-structuur VARIANT . De OLE-lidfuncties SAFEARRAY zijn beschikbaar via COleSafeArray, evenals een set lidfuncties die speciaal zijn ontworpen voor eendimensionale matrices van bytes.
Overnamehiërarchie
tagVARIANT
COleSafeArray
Requirements
Koptekst: afxdisp.h
COleSafeArray::AccessData
Hiermee wordt een aanwijzer naar de matrixgegevens opgehaald.
void AccessData(void** ppvData);
Parameterwaarden
ppvData
Een aanwijzer naar een aanwijzer naar de matrixgegevens.
Opmerkingen
Bij fout genereert de functie een CMemoryException of COleException.
Example
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
Wijst geheugen toe voor een veilige matrix.
void AllocData();
Opmerkingen
Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::AllocDescriptor
Wijst geheugen toe voor de descriptor van een veilige matrix.
void AllocDescriptor(DWORD dwDims);
Parameterwaarden
dwDims
Aantal dimensies in de veilige matrix.
Opmerkingen
Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::Attach
Geeft de controle over de gegevens in een bestaande VARIANT matrix aan het COleSafeArray object.
void Attach(VARIANT& varSrc);
Parameterwaarden
varSrc
Een VARIANT-object. De parameter varSrc moet de VARTYPE-VT_ARRAY hebben.
Opmerkingen
Het type bron VARIANTis ingesteld op VT_EMPTY. Met deze functie worden de huidige matrixgegevens gewist, indien van toepassing.
Example
Zie het voorbeeld voor COleSafeArray::AccessData.
COleSafeArray::Clear
Hiermee wist u de veilige matrix.
void Clear();
Opmerkingen
De functie wist een veilige matrix door het VARTYPE object in te stellen op VT_EMPTY. De huidige inhoud wordt vrijgegeven en de matrix wordt vrijgemaakt.
COleSafeArray::COleSafeArray
Maakt een COleSafeArray object.
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);
Parameterwaarden
saSrc
Een bestaand COleSafeArray object of SAFEARRAY naar het nieuwe COleSafeArray object worden gekopieerd.
vtSrc
Het VARTYPE van het nieuwe COleSafeArray object.
psaSrc
Een aanwijzer naar een SAFEARRAY te kopiëren object naar het nieuwe COleSafeArray object.
varSrc
Een bestaand VARIANT of COleVariant object dat moet worden gekopieerd naar het nieuwe COleSafeArray object.
pSrc
Een aanwijzer naar een VARIANT object dat moet worden gekopieerd naar het nieuwe COleSafeArray object.
Opmerkingen
Al deze constructors maken nieuwe COleSafeArray objecten. Als er geen parameter is, wordt er een leeg COleSafeArray object gemaakt (VT_EMPTY). Als de COleSafeArray matrix wordt gekopieerd uit een andere matrix waarvan VARTYPE impliciet bekend is (a COleSafeArray, COleVariantof VARIANT), wordt het VARTYPE van de bronmatrix behouden en hoeft u deze niet op te geven. Als de COleSafeArray waarde wordt gekopieerd uit een andere matrix waarvan VARTYPE niet bekend is (SAFEARRAY), moet het VARTYPE worden opgegeven in de vtSrc-parameter .
Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::Copy
Hiermee maakt u een kopie van een bestaande veilige matrix.
void Copy(LPSAFEARRAY* ppsa);
Parameterwaarden
ppsa
Aanwijzer naar een locatie waar de nieuwe matrixdescriptor moet worden geretourneerd.
Opmerkingen
Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::Maken
Hiermee worden de gegevens voor de matrix toegewezen en geïnitialiseerd.
void Create(
VARTYPE vtSrc,
DWORD dwDims,
DWORD* rgElements);
void Create(
VARTYPE vtSrc,
DWORD dwDims,
SAFEARRAYBOUND* rgsabounds);
Parameterwaarden
vtSrc
Het basistype van de matrix (dat wil gezegd het VARTYPE van elk element van de matrix). Het VARTYPE is beperkt tot een subset van de varianttypen. De VT_ARRAY en de vlag VT_BYREF kunnen niet worden ingesteld. VT_EMPTY en VT_NULL zijn ongeldige basistypen voor de matrix. Alle andere typen zijn legaal.
dwDims
Aantal dimensies in de matrix. Dit kan worden gewijzigd nadat de matrix is gemaakt met Redim.
rgElements
Aanwijzer naar een matrix van het aantal elementen voor elke dimensie in de matrix.
rgsabounds
Aanwijzer naar een vector van grenzen (één voor elke dimensie) die moet worden toegewezen voor de matrix.
Opmerkingen
Met deze functie worden de huidige matrixgegevens gewist, indien nodig. Bij fout genereert de functie een CMemoryException.
Example
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
Hiermee maakt u een nieuw eendimensionaal COleSafeArray object.
void CreateOneDim(
VARTYPE vtSrc,
DWORD dwElements,
const void* pvSrcData = NULL,
long nLBound = 0);
Parameterwaarden
vtSrc
Het basistype van de matrix (dat wil gezegd het VARTYPE van elk element van de matrix).
dwElements
Aantal elementen in de matrix. Dit kan worden gewijzigd nadat de matrix is gemaakt met ResizeOneDim.
pvSrcData
Wijs de gegevens aan die u naar de matrix wilt kopiëren.
nLBound
De ondergrens van de matrix.
Opmerkingen
Met de functie worden de gegevens voor de matrix toegewezen en geïnitialiseerd, waarbij de opgegeven gegevens worden gekopieerd als de aanwijzer pvSrcData niet NULL is.
Bij fout genereert de functie een CMemoryException.
Example
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
Hiermee vernietigt u een bestaande matrixdescriptor en alle gegevens in de matrix.
void Destroy();
Opmerkingen
Als objecten worden opgeslagen in de matrix, wordt elk object vrijgegeven. Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::D estroyData
Vernietigt alle gegevens in een veilige matrix.
void DestroyData();
Opmerkingen
Als objecten worden opgeslagen in de matrix, wordt elk object vrijgegeven. Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::D estroyDescriptor
Vernietigt een beschrijving van een veilige matrix.
void DestroyDescriptor();
Opmerkingen
Bij fout genereert de functie een CMemoryException of COleException.
COleSafeArray::D etach
De gegevens van het COleSafeArray object loskoppelenVARIANT.
VARIANT Detach();
Retourwaarde
De onderliggende VARIANT waarde in het COleSafeArray object.
Opmerkingen
Met de functie worden de gegevens in een veilige matrix losgekoppeld door het VARTYPE van het object in te stellen op VT_EMPTY. Het is de verantwoordelijkheid van de beller om de matrix vrij te maken door de Windows-functie VariantCall aan te roepen.
Bij fout genereert de functie een COleException.
Example
Zie het voorbeeld voor COleSafeArray::P utElement.
COleSafeArray::GetByteArray
Kopieert de inhoud van de veilige matrix naar een CByteArray.
void GetByteArray(CByteArray& bytes);
Parameterwaarden
bytes
Een verwijzing naar een CByteArray-object .
COleSafeArray::GetDim
Retourneert het aantal dimensies in het COleSafeArray object.
DWORD GetDim();
Retourwaarde
Het aantal dimensies in de veilige matrix.
Example
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
Hiermee haalt u één element van de veilige matrix op.
void GetElement(
long* rgIndices,
void* pvData);
Parameterwaarden
rgIndices
Wijs een matrix met indexen aan voor elke dimensie van de matrix.
pvData
Wijs de locatie aan om het element van de matrix te plaatsen.
Opmerkingen
Deze functie roept automatisch de vensterfuncties SafeArrayLock aan en SafeArrayUnlock voor en na het ophalen van het element. Als het gegevenselement een tekenreeks, object of variant is, kopieert de functie het element op de juiste manier. De parameter pvData moet verwijzen naar een buffer die groot genoeg is om het element te bevatten.
Bij fout genereert de functie een CMemoryException of COleException.
Example
//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
Hiermee wordt de grootte van een element in een COleSafeArray object opgehaald.
DWORD GetElemSize();
Retourwaarde
De grootte, in bytes, van de elementen van een veilige matrix.
COleSafeArray::GetLBound
Retourneert de ondergrens voor elke dimensie van een COleSafeArray object.
void GetLBound(
DWORD dwDim,
long* pLBound);
Parameterwaarden
dwDim
De matrixdimensie waarvoor de ondergrens moet worden berekend.
pLBound
Aanwijzer naar de locatie om de ondergrens te retourneren.
Opmerkingen
Bij fout genereert de functie een COleException.
Example
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
Retourneert het aantal elementen in het eendimensionale COleSafeArray object.
DWORD GetOneDimSize();
Retourwaarde
Het aantal elementen in de eendimensionale veilige matrix.
Example
Zie het voorbeeld voor COleSafeArray::CreateOneDim.
COleSafeArray::GetUBound
Retourneert de bovengrens voor elke dimensie van een veilige matrix.
void GetUBound(
DWORD dwDim,
long* pUBound);
Parameterwaarden
dwDim
De matrixdimensie waarvoor de bovengrens moet worden berekend.
pUBound
Aanwijzer naar de locatie om de bovengrens te retourneren.
Opmerkingen
Bij fout genereert de functie een COleException.
Example
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
Hiermee wordt het aantal vergrendelingen van een matrix verhoogd en wordt een aanwijzer naar de matrixgegevens in de matrixdescriptor geplaatst.
void Lock();
Opmerkingen
Bij fout wordt een COleException gegenereerd.
De aanwijzer in de matrixdescriptor is geldig totdat Unlock deze wordt aangeroepen. Aanroepen kunnen Lock worden genest. Er is een gelijk aantal aanroepen Unlock vereist.
Een matrix kan niet worden verwijderd terwijl deze is vergrendeld.
COleSafeArray::operator LPCVARIANT
Roep deze cast-operator aan om toegang te krijgen tot de onderliggende VARIANT structuur voor dit COleSafeArray object.
operator LPCVARIANT() const;
COleSafeArray::operator LPVARIANT
Roep deze cast-operator aan om toegang te krijgen tot de onderliggende VARIANT structuur voor dit COleSafeArray object.
operator LPVARIANT();
Opmerkingen
Houd er rekening mee dat het wijzigen van de waarde in de VARIANT structuur die wordt geopend door de aanwijzer die door deze functie wordt geretourneerd, de waarde van dit COleSafeArray object wijzigt.
COleSafeArray::operator =
Deze overbelaste toewijzingsoperatoren kopiëren de bronwaarde naar dit COleSafeArray object.
COleSafeArray& operator=(const COleSafeArray& saSrc);
COleSafeArray& operator=(const VARIANT& varSrc);
COleSafeArray& operator=(LPCVARIANT pSrc);
COleSafeArray& operator=(const COleVariant& varSrc);
Opmerkingen
Een korte beschrijving van elke operator volgt:
operator =(saSrc) Hiermee kopieert u een bestaand
COleSafeArrayobject naar dit object.operator =(varSrc) Hiermee kopieert u een bestaande
VARIANTofCOleVariantmatrix naar dit object.operator =(pSrc) Hiermee kopieert u het
VARIANTmatrixobject dat wordt geopend door pSrc in dit object.
COleSafeArray::operator ==
Deze operator vergelijkt twee matrices (SAFEARRAY, VARIANTof COleVariantCOleSafeArray matrices) en retourneert niet-nul als ze gelijk zijn; anders 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;
Opmerkingen
Twee matrices zijn gelijk als ze een gelijk aantal dimensies hebben, gelijke grootte in elke dimensie en gelijke elementwaarden.
COleSafeArray::operator <<
De COleSafeArray invoegoperator (<<) ondersteunt diagnostische dumping en opslag van een COleSafeArray object in een archief.
CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
COleSafeArray& saSrc);
COleSafeArray::P trOfIndex
Retourneert een aanwijzer naar het element dat is opgegeven door de indexwaarden.
void PtrOfIndex(
long* rgIndices,
void** ppvData);
Parameterwaarden
rgIndices
Een matrix met indexwaarden die een element van de matrix identificeren. Alle indexen voor het element moeten worden opgegeven.
ppvData
Wijs bij retour de aanwijzer naar het element dat is geïdentificeerd door de waarden in rgIndices.
COleSafeArray::P utElement
Hiermee wijst u één element toe aan de matrix.
void PutElement(
long* rgIndices,
void* pvData);
Parameterwaarden
rgIndices
Wijs een matrix met indexen aan voor elke dimensie van de matrix.
pvData
Wijs de gegevens aan die aan de matrix moeten worden toegewezen. VT_DISPATCH, VT_UNKNOWN en VT_BSTR varianttypen zijn aanwijzers en vereisen geen ander indirect niveau.
Opmerkingen
Met deze functie worden automatisch de Windows-functies SafeArrayLock en SafeArrayUnlock aangeroepen voor en na het toewijzen van het element. Als het gegevenselement een tekenreeks, object of variant is, kopieert de functie het correct en als het bestaande element een tekenreeks, object of variant is, wordt het correct gewist.
Houd er rekening mee dat u meerdere vergrendelingen op een matrix kunt hebben, zodat u elementen in een matrix kunt plaatsen terwijl de matrix is vergrendeld door andere bewerkingen.
Bij fout genereert de functie een CMemoryException of COleException.
Example
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
Hiermee wijzigt u de minst significante (meest rechtse) grens van een veilige matrix.
void Redim(SAFEARRAYBOUND* psaboundNew);
Parameterwaarden
psaboundNew
Wijs een nieuwe veilige matrixgrensstructuur aan die de nieuwe matrixgrens bevat. Alleen de minst significante dimensie van een matrix kan worden gewijzigd.
Opmerkingen
Bij fout genereert de functie een COleException.
COleSafeArray::ResizeOneDim
Hiermee wijzigt u het aantal elementen in een eendimensionaal COleSafeArray object.
void ResizeOneDim(DWORD dwElements);
Parameterwaarden
dwElements
Aantal elementen in de eendimensionale veilige matrix.
Opmerkingen
Bij fout genereert de functie een COleException.
Example
Zie het voorbeeld voor COleSafeArray::CreateOneDim.
COleSafeArray::UnaccessData
Hiermee wordt het aantal vergrendelingen van een matrix verminderd en wordt de aanwijzer ongeldig.AccessData
void UnaccessData();
Opmerkingen
Bij fout genereert de functie een COleException.
Example
Zie het voorbeeld voor COleSafeArray::AccessData.
COleSafeArray::Unlock
Hiermee wordt het aantal vergrendelingen van een matrix verkleind, zodat deze kan worden vrijgemaakt of verkleind.
void Unlock();
Opmerkingen
Deze functie wordt aangeroepen nadat de toegang tot de gegevens in een matrix is voltooid. Bij fout wordt een COleException gegenereerd.
Zie ook
Hiërarchiegrafiek
COleVariant-klasse
CRecordset-klasse
CDatabase-klasse