Aracılığıyla paylaş


CComSafeArray Sınıf

Uyarı

Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Bu sınıf, yapısı için SAFEARRAY bir sarmalayıcıdır.

Sözdizimi

template <typename T, VARTYPE _vartype = _ATL_AutomationType<T>::type>
class CComSafeArray

Parametreler

T
Dizide depolanacak veri türü.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CComSafeArray::CComSafeArray Oluşturucu.
CComSafeArray::~CComSafeArray Yok edici.

Genel Yöntemler

Veri Akışı Adı Açıklama
CComSafeArray::Add öğesine bir veya daha fazla öğe veya SAFEARRAY yapı CComSafeArrayekler.
CComSafeArray::Attach SAFEARRAY Bir nesneye CComSafeArray yapı ekler.
CComSafeArray::CopyFrom Bir SAFEARRAY yapının içeriğini nesneye CComSafeArray kopyalar.
CComSafeArray::CopyTo Nesnenin bir kopyasını CComSafeArray oluşturur.
CComSafeArray::Create Bir CComSafeArray nesnesi oluşturur.
CComSafeArray::Destroy Bir CComSafeArray nesneyi yok eder.
CComSafeArray::Detach Bir SAFEARRAY nesnesinden CComSafeArray ayırır.
CComSafeArray::GetAt Tek boyutlu bir diziden tek bir öğe alır.
CComSafeArray::GetCount Dizideki öğelerin sayısını döndürür.
CComSafeArray::GetDimensions Dizideki boyut sayısını döndürür.
CComSafeArray::GetLowerBound Dizinin belirli bir boyutu için alt sınırı döndürür.
CComSafeArray::GetSafeArrayPtr Veri üyesinin m_psa adresini döndürür.
CComSafeArray::GetType Dizide depolanan veri türünü döndürür.
CComSafeArray::GetUpperBound Dizinin herhangi bir boyutu için üst sınırı döndürür.
CComSafeArray::IsSizable Bir CComSafeArray nesnenin yeniden boyutlandırılıp boyutlandırılmadığını sınar.
CComSafeArray::MultiDimGetAt Çok boyutlu diziden tek bir öğe alır.
CComSafeArray::MultiDimSetAt Çok boyutlu dizideki bir öğenin değerini ayarlar.
CComSafeArray::Resize Nesneyi CComSafeArray yeniden boyutlandırıyor.
CComSafeArray::SetAt Tek boyutlu dizideki bir öğenin değerini ayarlar.

Ortak İşleçler

Veri Akışı Adı Açıklama
CComSafeArray::operator LPSAFEARRAY Bir değeri işaretçiye SAFEARRAY dönüştürür.
CComSafeArray::operator[] Diziden bir öğe alır.
CComSafeArray::operator = Atama işleci.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CComSafeArray::m_psa Bu veri üyesi, yapının adresini SAFEARRAY tutar.

Açıklamalar

CComSafeArrayveri türüSAFEARRAY bir sarmalayıcı sağlar, bu da desteklenen VARIANT türlerden hemen her birinin tek ve çok boyutlu dizilerini oluşturmayı ve yönetmeyi basit bir konu haline getirir.

CComSafeArray işlemler arasında dizi geçirmeyi basitleştirir ve ayrıca dizi dizini değerlerini üst ve alt sınırlara göre denetleyerek ek güvenlik sağlar.

Alt sınır, kullanıcı tanımlı herhangi bir CComSafeArray değerden başlayabilir; ancak C++ üzerinden erişilen diziler 0 alt sınırı kullanmalıdır. Visual Basic gibi diğer diller diğer sınırlayıcı değerleri (örneğin, -10 - 10) kullanabilir.

Bir CComSafeArray::Create nesne oluşturmak ve CComSafeArray silmek için kullanınCComSafeArray::Destroy.

A CComSafeArray , veri türlerinin aşağıdaki alt kümesini VARIANT içerebilir:

VARTYPE Açıklama
VT_I1 char
VT_I2 short
VT_I4 int
VT_I4 long
VT_I8 longlong
VT_UI1 byte
VT_UI2 ushort
VT_UI4 uint
VT_UI4 ulong
VT_UI8 ulonglong
VT_R4 float
VT_R8 double
VT_DECIMAL ondalık işaretçisi
VT_VARIANT değişken işaretçisi
VT_CY Currency veri türü

Gereksinimler

Üstbilgi:atlsafe.h

Örnek

// Create a multidimensional array, 
// then write and read elements

// Define an array of character pointers
CComSafeArray<char> *pSar;

char cElement;
char cTable[2][3] = {'A','B','C','D','E','F'};

// Declare the variable used to store the
// array indexes
LONG aIndex[2];

// Define the array bound structure
CComSafeArrayBound bound[2];
bound[0].SetCount(2);
bound[0].SetLowerBound(0);
bound[1].SetCount(3);
bound[1].SetLowerBound(0);   

// Create a new 2 dimensional array
// each dimension size is 3
pSar = new CComSafeArray<char>(bound,2); 

// Use MultiDimSetAt to store characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0] = x;
      aIndex[1] = y;
      HRESULT hr = pSar->MultiDimSetAt(aIndex,cTable[x][y]);
      ATLASSERT(hr == S_OK);
   }
}
// Use MultiDimGetAt to retrieve characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0]=x;
      aIndex[1]=y;
      HRESULT hr = pSar->MultiDimGetAt(aIndex,cElement);
      ATLASSERT(hr == S_OK);
      ATLASSERT(cElement == cTable[x][y]);
   }   
}

CComSafeArray::Add

öğesine bir veya daha fazla öğe veya SAFEARRAY yapı CComSafeArrayekler.

HRESULT Add(const SAFEARRAY* psaSrc);
HRESULT Add(ULONG ulCount, const T* pT, BOOL bCopy = TRUE);
HRESULT Add(const T& t, BOOL bCopy = TRUE);

Parametreler

psaSrc
Nesne işaretçisi SAFEARRAY .

ulCount
Diziye eklenecek nesne sayısı.

pT
Diziye eklenecek bir veya daha fazla nesnenin işaretçisi.

t
Diziye eklenecek nesneye başvuru.

bCopy
Verilerin bir kopyasının oluşturulup oluşturulmayacağını gösterir. Varsayılan değer şudur: TRUE.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Yeni nesneler var olan SAFEARRAY nesnenin sonuna eklenir. Çok boyutlu SAFEARRAY bir nesneye nesne ekleme desteklenmez. Mevcut bir nesne dizisi eklerken, her iki dizi de aynı türde öğeler içermelidir.

türündeki bCopyBSTR öğeler veya VARIANT bir diziye eklendiğinde bayrağı dikkate alınır. öğesinin TRUE varsayılan değeri, öğe diziye eklendiğinde verilerden yeni bir kopyanın yapılmasını sağlar.

CComSafeArray::Attach

SAFEARRAY Bir nesneye CComSafeArray yapı ekler.

HRESULT Attach(const SAFEARRAY* psaSrc);

Parametreler

psaSrc
Yapı işaretçisi SAFEARRAY .

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

SAFEARRAY Var olan CComSafeArray yöntemleri kullanılabilir hale getirerek bir CComSafeArray nesneye bir yapı ekler.

CComSafeArray::CComSafeArray

Oluşturucu.

CComSafeArray();
CComSafeArray(const SAFEARRAYBOUND& bound);
CComSafeArray(ULONG  ulCount, LONG lLBound = 0);
CComSafeArray(const SAFEARRAYBOUND* pBound, UINT uDims = 1);
CComSafeArray(const CComSafeArray& saSrc);
CComSafeArray(const SAFEARRAY& saSrc);
CComSafeArray(const SAFEARRAY* psaSrc);

Parametreler

bound
Bir SAFEARRAYBOUND yapı.

ulCount
Dizideki öğelerin sayısı

lLBound
Alt sınır değeri; diğer bir ifadeyle dizideki ilk öğenin dizinidir.

pBound
Bir yapıya işaretçi SAFEARRAYBOUND .

uDims
Dizideki boyutların sayısı.

saSrc
Bir yapıya veya SAFEARRAY nesneye CComSafeArray başvuru. Her iki durumda da, oluşturucu dizinin bir kopyasını oluşturmak için bu başvuruyu kullanır, bu nedenle derlemeden sonra diziye başvurulmazsınız.

psaSrc
Bir yapıya işaretçi SAFEARRAY . Oluşturucu, dizinin bir kopyasını oluşturmak için bu adresi kullanır, bu nedenle derlemeden sonra diziye hiçbir zaman başvurulmazdı.

Açıklamalar

Bir CComSafeArray nesnesi oluşturur.

CComSafeArray::~CComSafeArray

Yok edici.

~CComSafeArray() throw()

Açıklamalar

Ayrılan tüm kaynakları serbesttir.

CComSafeArray::CopyFrom

Bir SAFEARRAY yapının içeriğini nesneye CComSafeArray kopyalar.

HRESULT CopyFrom(LPSAFEARRAY* ppArray);

Parametreler

ppArray
Kopyalanacak işaretçi SAFEARRAY .

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Bu yöntem, içeriğini SAFEARRAY geçerli CComSafeArray nesneye kopyalar. Dizinin mevcut içeriği değiştirilir.

CComSafeArray::CopyTo

Nesnenin bir kopyasını CComSafeArray oluşturur.

HRESULT CopyTo(LPSAFEARRAY* ppArray);

Parametreler

ppArray
Yeni SAFEARRAYöğesinin oluşturulacağı konumun işaretçisi.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Bu yöntem, bir CComSafeArray nesnenin içeriğini bir SAFEARRAY yapıya kopyalar.

CComSafeArray::Create

oluşturur CComSafeArray.

HRESULT Create(const SAFEARRAYBOUND* pBound, UINT uDims = 1);
HRESULT Create(ULONG ulCount = 0, LONG lLBound = 0);

Parametreler

pBound
Nesne işaretçisi SAFEARRAYBOUND .

uDims
Dizideki boyut sayısı.

ulCount
Dizideki öğelerin sayısı

lLBound
Alt sınır değeri; diğer bir ifadeyle dizideki ilk öğenin dizinidir.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Bir CComSafeArray nesne var olan SAFEARRAYBOUND bir yapıdan ve boyut sayısından veya dizideki öğe sayısı ve alt sınır belirtilerek oluşturulabilir. Diziye C++'tan erişilecekse alt sınır 0 olmalıdır. Diğer diller alt sınır için başka değerlere izin verebilir (örneğin, Visual Basic -10 ile 10 arasında bir aralığa sahip öğeleri olan dizileri destekler).

CComSafeArray::Destroy

Bir CComSafeArray nesneyi yok eder.

HRESULT Destroy();

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Mevcut CComSafeArray bir nesneyi ve içerdiği tüm verileri yok eder.

CComSafeArray::Detach

Bir SAFEARRAY nesnesinden CComSafeArray ayırır.

LPSAFEARRAY Detach();

Dönüş değeri

Bir nesnenin işaretçisini SAFEARRAY döndürür.

Açıklamalar

Bu yöntem nesnesini nesneden SAFEARRAY ayırırCComSafeArray.

CComSafeArray::GetAt

Tek boyutlu bir diziden tek bir öğe alır.

T& GetAt(LONG lIndex) const;

Parametreler

lIndex
Döndürülecek dizideki değerin dizin numarası.

Dönüş değeri

Gerekli dizi öğesine başvuru döndürür.

CComSafeArray::GetCount

Dizideki öğelerin sayısını döndürür.

ULONG GetCount(UINT uDim = 0) const;

Parametreler

uDim
Dizi boyutu.

Dönüş değeri

Dizideki öğelerin sayısını döndürür.

Açıklamalar

Çok boyutlu bir diziyle kullanıldığında, bu yöntem yalnızca belirli bir boyuttaki öğe sayısını döndürür.

CComSafeArray::GetDimensions

Dizideki boyut sayısını döndürür.

UINT GetDimensions() const;

Dönüş değeri

Dizideki boyut sayısını döndürür.

CComSafeArray::GetLowerBound

Dizinin belirli bir boyutu için alt sınırı döndürür.

LONG GetLowerBound(UINT uDim = 0) const;

Parametreler

uDim
Alt sınırın alındığı dizi boyutu. Atlanırsa, varsayılan değer 0'dır.

Dönüş değeri

Alt sınırı döndürür.

Açıklamalar

Alt sınır 0 ise, ilk öğesi öğe numarası 0 olan C benzeri bir diziyi gösterir. Örneğin geçersiz bir boyut bağımsız değişkeni gibi bir hata durumunda, bu yöntem hatayı açıklayan bir AtlThrow ile çağrılarHRESULT.

CComSafeArray::GetSafeArrayPtr

Veri üyesinin m_psa adresini döndürür.

LPSAFEARRAY* GetSafeArrayPtr() throw();

Dönüş değeri

Veri üyesine CComSafeArray::m_psa bir işaretçi döndürür.

CComSafeArray::GetType

Dizide depolanan veri türünü döndürür.

VARTYPE GetType() const;

Dönüş değeri

Dizide depolanan ve aşağıdaki türlerden herhangi biri olabilecek veri türünü döndürür:

VARTYPE Açıklama
VT_I1 char
VT_I2 short
VT_I4 int
VT_I4 long
VT_I8 longlong
VT_UI1 byte
VT_UI2 ushort
VT_UI4 uint
VT_UI4 ulong
VT_UI8 ulonglong
VT_R4 float
VT_R8 double
VT_DECIMAL ondalık işaretçisi
VT_VARIANT değişken işaretçisi
VT_CY Currency veri türü

CComSafeArray::GetUpperBound

Dizinin herhangi bir boyutu için üst sınırı döndürür.

LONG GetUpperBound(UINT uDim = 0) const;

Parametreler

uDim
Üst sınırın alındığı dizi boyutu. Atlanırsa, varsayılan değer 0'dır.

Dönüş değeri

Üst sınırı döndürür. Bu değer, bu boyut için geçerli olan en yüksek dizin olan kapsayıcı değerdir.

Açıklamalar

Örneğin geçersiz bir boyut bağımsız değişkeni gibi bir hata durumunda, bu yöntem hatayı açıklayan bir AtlThrow ile çağrılarHRESULT.

CComSafeArray::IsSizable

Bir CComSafeArray nesnenin yeniden boyutlandırılıp boyutlandırılmadığını sınar.

bool IsSizable() const;

Dönüş değeri

yeniden boyutlandırılabilirseTRUE, CComSafeArray yeniden boyutlandırılamazsa döndürürFALSE.

CComSafeArray::m_psa

Erişilen yapının adresini SAFEARRAY tutar.

LPSAFEARRAY m_psa;

CComSafeArray::MultiDimGetAt

Çok boyutlu diziden tek bir öğe alır.

HRESULT MultiDimGetAt(const LONG* alIndex, T& t);

Parametreler

alIndex
Dizideki her boyut için dizin vektörünün işaretçisi. En soldaki (en önemli) boyut şeklindedir alIndex[0].

t
Döndürülen verilere başvuru.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

CComSafeArray::MultiDimSetAt

Çok boyutlu dizideki bir öğenin değerini ayarlar.

HRESULT MultiDimSetAt(const LONG* alIndex, const T& t);

Parametreler

alIndex
Dizideki her boyut için dizin vektörünün işaretçisi. En sağdaki (en az önemli) boyutdur alIndex[0].

T
Yeni öğenin değerini belirtir.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Bu, çok boyutlu bir sürümüdür CComSafeArray::SetAt.

CComSafeArray::operator []

Diziden bir öğe alır.

T& operator[](long lindex) const;
T& operator[](int nindex) const;

Parametreler

lIndex, nIndex
Dizideki gerekli öğenin dizin numarası.

Dönüş değeri

Uygun dizi öğesini döndürür.

Açıklamalar

ile benzer bir işlev CComSafeArray::GetAtgerçekleştirir, ancak bu işleç yalnızca tek boyutlu dizilerle çalışır.

CComSafeArray::operator =

Atama işleci.

ATL::CComSafeArray<T>& operator=(const ATL::CComSafeArray& saSrc);
ATL::CComSafeArray<T>& operator=(const SAFEARRAY* psaSrc);

Parametreler

saSrc
Bir nesneye CComSafeArray başvuru.

psaSrc
Nesne işaretçisi SAFEARRAY .

Dönüş değeri

Dizide depolanan veri türünü döndürür.

CComSafeArray::operator LPSAFEARRAY

Bir değeri işaretçiye SAFEARRAY dönüştürür.

operator LPSAFEARRAY() const;

Dönüş değeri

Bir değeri işaretçiye SAFEARRAY dönüştürür.

CComSafeArray::Resize

Nesneyi CComSafeArray yeniden boyutlandırıyor.

HRESULT Resize(const SAFEARRAYBOUND* pBound);
HRESULT Resize(ULONG ulCount, LONG lLBound = 0);

Parametreler

pBound
SAFEARRAYBOUND Bir dizinin öğe sayısı ve alt sınırı hakkında bilgi içeren bir yapı işaretçisi.

ulCount
Yeniden boyutlandırılan dizideki istenen nesne sayısı.

lLBound
Alt sınır.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

Bu yöntem yalnızca en sağdaki boyutu yeniden boyutlandırıyor. olarak IsResizabledöndürülen FALSE dizileri yeniden boyutlandırmaz.

CComSafeArray::SetAt

Tek boyutlu dizideki bir öğenin değerini ayarlar.

HRESULT SetAt(LONG lIndex, const T& t, BOOL bCopy = TRUE);

Parametreler

lIndex
Ayarlanacağı dizi öğesinin dizin numarası.

t
Belirtilen öğenin yeni değeri.

bCopy
Verilerin bir kopyasının oluşturulup oluşturulmayacağını gösterir. Varsayılan değer şudur: TRUE.

Dönüş değeri

Başarılı olduğunda veya hatada bir hata S_OK döndürürHRESULT.

Açıklamalar

türündeki bCopyBSTR öğeler veya VARIANT bir diziye eklendiğinde bayrağı dikkate alınır. öğesinin TRUE varsayılan değeri, öğe diziye eklendiğinde verilerden yeni bir kopyanın yapılmasını sağlar.

Ayrıca bkz.

SAFEARRAY Veri tipi
CComSafeArray::Create
CComSafeArray::Destroy
Sınıfa Genel Bakış