COleSafeArray Sınıfı
Rastgele tür ve boyut dizileriyle çalışmak için bir sınıf.
Sözdizimi
class COleSafeArray : public tagVARIANT
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
COleSafeArray::COleSafeArray | Bir COleSafeArray nesne oluşturur. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
COleSafeArray::AccessData | Dizi verilerine yönelik bir işaretçi alır. |
COleSafeArray::AllocData | Dizi için bellek ayırır. |
COleSafeArray::AllocDescriptor | Güvenli dizi tanımlayıcısı için bellek ayırır. |
COleSafeArray::Attach | Var olan VARIANT dizinin denetimini nesneye COleSafeArray verir. |
COleSafeArray::Clear | Temel alınan içindeki tüm verileri boşaltıyor VARIANT . |
COleSafeArray::Copy | Var olan bir dizinin kopyasını oluşturur. |
COleSafeArray::Create | Güvenli bir dizi oluşturur. |
COleSafeArray::CreateOneDim | Tek boyutlu COleSafeArray bir nesne oluşturur. |
COleSafeArray::D estroy | Varolan bir diziyi yok eder. |
COleSafeArray::D estroyData | Güvenli bir dizideki verileri yok eder. |
COleSafeArray::D estroyDescriptor | Güvenli bir dizinin tanımlayıcısı yok eder. |
COleSafeArray::D etach | VARIANT dizisini COleSafeArray nesneden ayırır (böylece veriler serbest olmaz). |
COleSafeArray::GetByteArray | Güvenli dizinin içeriğini bir CByteArray içine kopyalar. |
COleSafeArray::GetDim | Dizideki boyut sayısını döndürür. |
COleSafeArray::GetElement | Güvenli dizinin tek bir öğesini alır. |
COleSafeArray::GetElemSize | Güvenli dizideki bir öğenin bayt cinsinden boyutunu döndürür. |
COleSafeArray::GetLBound | Güvenli bir dizinin herhangi bir boyutu için alt sınırı döndürür. |
COleSafeArray::GetOneDimSize | Tek boyutlu COleSafeArray nesnedeki öğe sayısını döndürür. |
COleSafeArray::GetUBound | Güvenli bir dizinin herhangi bir boyutu için üst sınırı döndürür. |
COleSafeArray::Lock | Dizinin kilit sayısını artırır ve dizi tanımlayıcısında dizi verilerine bir işaretçi yerleştirir. |
COleSafeArray::P trOfIndex | Dizine alınan öğeye bir işaretçi döndürür. |
COleSafeArray::P utElement | Diziye tek bir öğe atar. |
COleSafeArray::Redim | Güvenli bir dizinin en az önemli (en sağdaki) sınırlarını değiştirir. |
COleSafeArray::ResizeOneDim | Tek boyutlu COleSafeArray bir nesnedeki öğelerin sayısını değiştirir. |
COleSafeArray::UnaccessData | Bir dizinin kilit sayısını azaltıp tarafından AccessData alınan işaretçiyi geçersizleştirir. |
COleSafeArray::Unlock | Dizi serbest veya yeniden boyutlandırılabilir şekilde kilit sayısını azaltma. |
Ortak İşleçler
Veri Akışı Adı | Açıklama |
---|---|
COleSafeArray::operator LPCVARIANT | Nesnenin temel alınan VARIANT yapısına erişir COleSafeArray . |
COleSafeArray::operator LPVARIANT | Nesnenin temel alınan VARIANT yapısına erişir COleSafeArray . |
COleSafeArray::operator = | Değerleri bir COleSafeArray nesneye (SAFEARRAY , VARIANT , COleVariant veya COleSafeArray dizi) kopyalar. |
COleSafeArray::operator == | İki değişken diziyi (SAFEARRAY , VARIANT , COleVariant veya COleSafeArray dizileri) karşılaştırır. |
COleSafeArray::operator << |
Döküm bağlamı için bir COleSafeArray nesnenin içeriğinin çıkışını alır. |
Açıklamalar
COleSafeArray
OLE VARIANT
yapısından türetilir. OLE SAFEARRAY
üye işlevleri, aracılığıyla ve tek boyutlu bayt dizileri için özel olarak tasarlanmış bir üye işlevleri kümesi aracılığıyla COleSafeArray
kullanılabilir.
Devralma Hiyerarşisi
tagVARIANT
COleSafeArray
Gereksinimler
Üst bilgi: afxdisp.h
COleSafeArray::AccessData
Dizi verilerine yönelik bir işaretçi alır.
void AccessData(void** ppvData);
Parametreler
ppvData
Dizi verilerinin işaretçisine işaret eden bir işaretçi.
Açıklamalar
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
Örnek
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
Güvenli bir dizi için bellek ayırır.
void AllocData();
Açıklamalar
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::AllocDescriptor
Güvenli bir dizinin tanımlayıcısı için bellek ayırır.
void AllocDescriptor(DWORD dwDims);
Parametreler
dwDims
Güvenli dizideki boyut sayısı.
Açıklamalar
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::Attach
Var olan VARIANT
bir dizideki verilerin denetimini nesneye COleSafeArray
verir.
void Attach(VARIANT& varSrc);
Parametreler
varSrc
Bir VARIANT
nesnesi. varSrc parametresinde VARTYPE VT_ARRAY olmalıdır.
Açıklamalar
Kaynağın VARIANT
türü VT_EMPTY olarak ayarlanır. Bu işlev, varsa geçerli dizi verilerini temizler.
Örnek
COleSafeArray::AccessData örneğine bakın.
COleSafeArray::Clear
Güvenli diziyi temizler.
void Clear();
Açıklamalar
işlevi, nesnesini VT_EMPTY olarak ayarlayarak VARTYPE
güvenli bir diziyi temizler. Geçerli içerik serbest bırakılır ve dizi serbest bırakılır.
COleSafeArray::COleSafeArray
Bir COleSafeArray
nesne oluşturur.
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);
Parametreler
saSrc
Var olan COleSafeArray
veya SAFEARRAY
yeni COleSafeArray
nesneye kopyalanacak bir nesne.
vtSrc
Yeni COleSafeArray
nesnenin VARTYPE'sı.
psaSrc
Yeni COleSafeArray
nesneye kopyalanacak bir SAFEARRAY
işaretçi.
varSrc
Yeni COleSafeArray
nesneye kopyalanacak mevcut VARIANT
veya COleVariant
nesne.
pSrc
Yeni COleSafeArray
nesneye kopyalanacak nesne VARIANT
işaretçisi.
Açıklamalar
Bu oluşturucuların tümü yeni COleSafeArray
nesneler oluşturur. Parametre yoksa boş COleSafeArray
bir nesne oluşturulur (VT_EMPTY). COleSafeArray
, VARTYPE'ı örtük olarak bilinen başka bir diziden kopyalanırsa (a COleSafeArray
, COleVariant
veya VARIANT
), kaynak dizinin VARTYPE'ı korunur ve belirtilmesi gerekmez. COleSafeArray
, VARTYPE değeri bilinmeyenSAFEARRAY
( ) başka bir diziden kopyalanırsa, vtSrc parametresinde VARTYPE belirtilmelidir.
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::Copy
Mevcut bir güvenli dizinin kopyasını oluşturur.
void Copy(LPSAFEARRAY* ppsa);
Parametreler
ppsa
Yeni dizi tanımlayıcısının döndürüleceği konumun işaretçisi.
Açıklamalar
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::Create
Dizi için verileri ayırır ve başlatır.
void Create(
VARTYPE vtSrc,
DWORD dwDims,
DWORD* rgElements);
void Create(
VARTYPE vtSrc,
DWORD dwDims,
SAFEARRAYBOUND* rgsabounds);
Parametreler
vtSrc
Dizinin temel türü (yani, dizinin her öğesinin VARTYPE değeri). VARTYPE, değişken türlerinin bir alt kümesiyle sınırlıdır. ne VT_ARRAY ne de VT_BYREF bayrağı ayarlanamaz. VT_EMPTY ve VT_NULL dizi için geçerli temel türler değildir. Diğer tüm türler yasaldır.
dwDims
Dizideki boyut sayısı. Dizi Redim ile oluşturulduktan sonra bu değiştirilebilir.
rgElements
Dizideki her boyut için öğe sayısını içeren bir dizi işaretçisi.
rgsabounds
Dizi için ayrılacak bir sınır vektörünün (her boyut için bir tane) işaretçisi.
Açıklamalar
Bu işlev gerekirse geçerli dizi verilerini temizler. Hatada, işlevi bir CMemoryException oluşturur.
Örnek
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
Yeni bir tek boyutlu COleSafeArray
nesne oluşturur.
void CreateOneDim(
VARTYPE vtSrc,
DWORD dwElements,
const void* pvSrcData = NULL,
long nLBound = 0);
Parametreler
vtSrc
Dizinin temel türü (yani, dizinin her öğesinin VARTYPE değeri).
dwElements
Dizideki öğe sayısı. Bu, dizi ResizeOneDim ile oluşturulduktan sonra değiştirilebilir.
pvSrcData
Diziye kopyalanacak verilerin işaretçisi.
nLBound
Dizinin alt sınırı.
Açıklamalar
İşlev, pvSrcData işaretçisi NULL değilse belirtilen verileri kopyalayarak dizi için verileri ayırır ve başlatır.
Hatada, işlevi bir CMemoryException oluşturur.
Örnek
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
Varolan bir dizi tanımlayıcısını ve dizideki tüm verileri yok eder.
void Destroy();
Açıklamalar
Nesneler dizide depolanıyorsa, her nesne serbest bırakılır. Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::D estroyData
Güvenli bir dizideki tüm verileri yok eder.
void DestroyData();
Açıklamalar
Nesneler dizide depolanıyorsa, her nesne serbest bırakılır. Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::D estroyDescriptor
Güvenli bir dizinin tanımlayıcısı yok eder.
void DestroyDescriptor();
Açıklamalar
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
COleSafeArray::D etach
VARIANT
Verileri nesneden COleSafeArray
ayırır.
VARIANT Detach();
Dönüş Değeri
Nesnedeki COleSafeArray
temel VARIANT
değer.
Açıklamalar
işlevi, nesnenin VARTYPE değerini VT_EMPTY olarak ayarlayarak güvenli bir dizideki verileri ayırır. Windows işlevi VariantClear'ı çağırarak diziyi boşaltmak çağıranın sorumluluğundadır.
Hatada, işlevi bir COleException oluşturur.
Örnek
COleSafeArray::P utElement örneğine bakın.
COleSafeArray::GetByteArray
Güvenli dizinin içeriğini içine CByteArray
kopyalar.
void GetByteArray(CByteArray& bytes);
Parametreler
Bayt
CByteArray nesnesine başvuru.
COleSafeArray::GetDim
Nesnedeki COleSafeArray
boyut sayısını döndürür.
DWORD GetDim();
Dönüş Değeri
Güvenli dizideki boyut sayısı.
Örnek
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
Güvenli dizinin tek bir öğesini alır.
void GetElement(
long* rgIndices,
void* pvData);
Parametreler
rgIndices
Dizinin her boyutu için dizin dizisi işaretçisi.
pvData
Dizinin öğesini yerleştirmek için konumun işaretçisi.
Açıklamalar
Bu işlev, öğeyi almadan önce ve SafeArrayUnlock
aldıktan sonra windows işlevlerini SafeArrayLock
otomatik olarak çağırır. Veri öğesi bir dize, nesne veya değişkense, işlev öğeyi doğru şekilde kopyalar. pvData parametresi, öğesini içerecek kadar büyük bir arabelleğe işaret etmelidir.
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
Örnek
//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
Nesnedeki COleSafeArray
bir öğenin boyutunu alır.
DWORD GetElemSize();
Dönüş Değeri
Güvenli bir dizinin öğelerinin bayt cinsinden boyutu.
COleSafeArray::GetLBound
Nesnenin herhangi bir COleSafeArray
boyutu için alt sınırı döndürür.
void GetLBound(
DWORD dwDim,
long* pLBound);
Parametreler
dwDim
Alt sınırın alındığı dizi boyutu.
pLBound
Alt sınırı döndürmek için konumun işaretçisi.
Açıklamalar
Hatada, işlevi bir COleException oluşturur.
Örnek
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
Tek boyutlu COleSafeArray
nesnedeki öğe sayısını döndürür.
DWORD GetOneDimSize();
Dönüş Değeri
Tek boyutlu güvenli dizideki öğelerin sayısı.
Örnek
COleSafeArray::CreateOneDim örneğine bakın.
COleSafeArray::GetUBound
Güvenli bir dizinin herhangi bir boyutu için üst sınırı döndürür.
void GetUBound(
DWORD dwDim,
long* pUBound);
Parametreler
dwDim
Üst sınırın alındığı dizi boyutu.
pUBound
Üst sınırı döndürmek için konumun işaretçisi.
Açıklamalar
Hatada, işlevi bir COleException oluşturur.
Örnek
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
Bir dizinin kilit sayısını artırır ve dizi tanımlayıcısına dizi verilerine bir işaretçi yerleştirir.
void Lock();
Açıklamalar
Hatada, bir COleException oluşturur.
Dizi tanımlayıcısı içindeki işaretçi çağrılana kadar Unlock
geçerlidir. çağrısı Lock
iç içe yerleştirilebilir; çağrısı sayısı Unlock
eşit olur.
Bir dizi kilitliyken silinemez.
COleSafeArray::operator LPCVARIANT
Bu nesnenin temel alınan VARIANT
yapısına erişmek için bu COleSafeArray
atama işlecini çağırın.
operator LPCVARIANT() const;
COleSafeArray::operator LPVARIANT
Bu nesnenin temel alınan VARIANT
yapısına erişmek için bu COleSafeArray
atama işlecini çağırın.
operator LPVARIANT();
Açıklamalar
Bu işlev tarafından döndürülen işaretçi tarafından erişilen yapıdaki VARIANT
değerin değiştirilmesinin bu COleSafeArray
nesnenin değerini değiştireceğini unutmayın.
COleSafeArray::operator =
Bu aşırı yüklenmiş atama işleçleri kaynak değeri bu COleSafeArray
nesneye kopyalar.
COleSafeArray& operator=(const COleSafeArray& saSrc);
COleSafeArray& operator=(const VARIANT& varSrc);
COleSafeArray& operator=(LPCVARIANT pSrc);
COleSafeArray& operator=(const COleVariant& varSrc);
Açıklamalar
Her işlecin kısa bir açıklaması şu şekildedir:
operator =( saSrc ) Varolan
COleSafeArray
bir nesneyi bu nesneye kopyalar.operator =( varSrc ) Varolan
VARIANT
bir veyaCOleVariant
diziyi bu nesneye kopyalar.operator =( pSrc ) pSrc tarafından erişilen dizi nesnesini bu nesneye kopyalar
VARIANT
.
COleSafeArray::operator ==
Bu işleç iki diziyi (SAFEARRAY
, VARIANT
, veya COleVariant
COleSafeArray
dizileri) karşılaştırır ve eşitse sıfır olmayan, aksi takdirde 0 döndürür.
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;
Açıklamalar
İki dizi eşit sayıda boyuta, her boyutta eşit boyuta ve eşit öğe değerlerine sahipse eşittir.
COleSafeArray::operator <<
Ekleme COleSafeArray
(<<) işleci, tanılama dökümünü ve bir COleSafeArray
nesnenin arşive depolanmasını destekler.
CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
COleSafeArray& saSrc);
COleSafeArray::P trOfIndex
Dizin değerleri tarafından belirtilen öğeye yönelik bir işaretçi döndürür.
void PtrOfIndex(
long* rgIndices,
void** ppvData);
Parametreler
rgIndices
Dizinin bir öğesini tanımlayan dizin değerleri dizisi. öğesinin tüm dizinleri belirtilmelidir.
ppvData
Dönüşte, rgIndices değerleri tarafından tanımlanan öğe işaretçisi.
COleSafeArray::P utElement
Diziye tek bir öğe atar.
void PutElement(
long* rgIndices,
void* pvData);
Parametreler
rgIndices
Dizinin her boyutu için dizin dizisi işaretçisi.
pvData
Diziye atanacak verilerin işaretçisi. VT_DISPATCH, VT_UNKNOWN ve VT_BSTR değişken türleri işaretçilerdir ve başka bir dolaylılık düzeyi gerektirmez.
Açıklamalar
Bu işlev, öğe atanmadan önce ve atandıktan sonra Windows işlevlerini otomatik olarak SafeArrayLock ve SafeArrayUnlock olarak çağırır. Veri öğesi bir dize, nesne veya değişkense işlev bunu doğru şekilde kopyalar ve var olan öğe bir dize, nesne veya değişkense doğru şekilde temizlenir.
Dizi diğer işlemler tarafından kilitlenirken bir diziye öğe yerleştirebilmeniz için dizide birden çok kilit olabileceğini unutmayın.
Hatada, işlevi bir CMemoryException veya COleException oluşturur.
Örnek
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
Güvenli bir dizinin en az önemli (en sağdaki) sınırlarını değiştirir.
void Redim(SAFEARRAYBOUND* psaboundNew);
Parametreler
psaboundNew
Yeni dizi bağlısını içeren yeni bir güvenli dizi bağlı yapısının işaretçisi. Bir dizinin yalnızca en az önemli boyutu değiştirilebilir.
Açıklamalar
Hatada, işlevi bir COleException oluşturur.
COleSafeArray::ResizeOneDim
Tek boyutlu COleSafeArray
bir nesnedeki öğelerin sayısını değiştirir.
void ResizeOneDim(DWORD dwElements);
Parametreler
dwElements
Tek boyutlu güvenli dizideki öğe sayısı.
Açıklamalar
Hatada, işlevi bir COleException oluşturur.
Örnek
COleSafeArray::CreateOneDim örneğine bakın.
COleSafeArray::UnaccessData
Bir dizinin kilit sayısını azaltıp tarafından AccessData
alınan işaretçiyi geçersizleştirir.
void UnaccessData();
Açıklamalar
Hatada, işlevi bir COleException oluşturur.
Örnek
COleSafeArray::AccessData örneğine bakın.
COleSafeArray::Unlock
Dizi serbest veya yeniden boyutlandırılabilir şekilde kilit sayısını azaltma.
void Unlock();
Açıklamalar
Dizideki verilere erişim tamamlandıktan sonra bu işlev çağrılır. Hatada, bir COleException oluşturur.
Ayrıca bkz.
Hiyerarşi Grafiği
COleVariant Sınıfı
CRecordset Sınıfı
CDatabase Sınıfı