Aracılığıyla paylaş


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 AccessDataalı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, COleVariantveya COleSafeArray dizi) kopyalar.
COleSafeArray::operator == İki değişken diziyi (SAFEARRAY, VARIANT, COleVariantveya 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 COleSafeArraykullanı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 VARIANTtü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, COleVariantveya 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 CByteArraykopyalar.

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 veya COleVariant diziyi bu nesneye kopyalar.

  • operator =( pSrc ) pSrc tarafından erişilen dizi nesnesini bu nesneye kopyalarVARIANT.

COleSafeArray::operator ==

Bu işleç iki diziyi (SAFEARRAY, VARIANT, veya COleVariantCOleSafeArray 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 AccessDataalı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ı