Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ış