COleSafeArray 클래스
임의의 형식 및 차원 배열 작업용 클래스입니다.
구문
class COleSafeArray : public tagVARIANT
멤버
공용 생성자
속성 | 설명 |
---|---|
COleSafeArray::COleSafeArray | COleSafeArray 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
COleSafeArray::AccessData | 배열 데이터에 대한 포인터를 검색합니다. |
COleSafeArray::AllocData | 배열에 대한 메모리를 할당합니다. |
COleSafeArray::AllocDescriptor | 안전한 배열 설명자에 대한 메모리를 할당합니다. |
COleSafeArray::Attach | 개체에 대한 기존 VARIANT 배열을 제어합니다 COleSafeArray . |
COleSafeArray::Clear | 기본의 모든 데이터를 해제합니다 VARIANT . |
COleSafeArray::Copy | 기존 배열의 복사본을 만듭니다. |
COleSafeArray::Create | 안전한 배열을 만듭니다. |
COleSafeArray::CreateOneDim | 1차원 COleSafeArray 개체를 만듭니다. |
COleSafeArray::D estroy | 기존 배열을 삭제합니다. |
COleSafeArray::D estroyData | 안전한 배열의 데이터를 삭제합니다. |
COleSafeArray::D estroyDescriptor | 안전한 배열의 설명자를 삭제합니다. |
COleSafeArray::D etach | 데이터가 해제되지 않도록 개체에서 COleSafeArray VARIANT 배열을 분리합니다. |
COleSafeArray::GetByteArray | 안전한 배열의 내용을 CByteArray에 복사합니다. |
COleSafeArray::GetDim | 배열의 차원 수를 반환합니다. |
COleSafeArray::GetElement | 안전 배열의 단일 요소를 검색합니다. |
COleSafeArray::GetElemSize | 안전 배열에 있는 한 요소의 크기(바이트)를 반환합니다. |
COleSafeArray::GetLBound | 안전 배열의 모든 차원에 대한 하한을 반환합니다. |
COleSafeArray::GetOneDimSize | 1차원 COleSafeArray 개체의 요소 수를 반환합니다. |
COleSafeArray::GetUBound | 안전 배열의 모든 차원에 대한 상한을 반환합니다. |
COleSafeArray::Lock | 배열의 잠금 수를 증가시키고 배열 설명자의 배열 데이터에 대한 포인터를 배치합니다. |
COleSafeArray::P trOfIndex | 인덱싱된 요소에 대한 포인터를 반환합니다. |
COleSafeArray::P utElement | 단일 요소를 배열에 할당합니다. |
COleSafeArray::Redim | 안전 배열의 최적(맨 오른쪽) 경계를 변경합니다. |
COleSafeArray::ResizeOneDim | 1차원 COleSafeArray 개체의 요소 수를 변경합니다. |
COleSafeArray::UnaccessData | 배열의 잠금 수를 감소시키고 검색한 AccessData 포인터를 무효화합니다. |
COleSafeArray::Unlock | 해제하거나 크기를 조정할 수 있도록 배열의 잠금 수를 줄입니다. |
Public 연산자
속성 | 설명 |
---|---|
COleSafeArray::operator LPCVARIANT | 개체의 기본 VARIANT 구조에 COleSafeArray 액세스합니다. |
COleSafeArray::operator LPVARIANT | 개체의 기본 VARIANT 구조에 COleSafeArray 액세스합니다. |
COleSafeArray::operator = | 개체(, , COleVariant 또는 COleSafeArray 배열)에 COleSafeArray VARIANT 값을 복사합니다.SAFEARRAY |
COleSafeArray::operator == | 두 변형 배열(SAFEARRAY , VARIANT , COleVariant 또는 COleSafeArray 배열)을 비교합니다. |
COleSafeArray::operator << |
개체의 COleSafeArray 내용을 덤프 컨텍스트에 출력합니다. |
설명
COleSafeArray
는 OLE VARIANT
구조체에서 파생됩니다. OLE SAFEARRAY
멤버 함수는 1차원 바이트 배열용으로 특별히 설계된 멤버 함수 집합뿐만 아니라 통해 COleSafeArray
사용할 수 있습니다.
상속 계층 구조
tagVARIANT
COleSafeArray
요구 사항
헤더: afxdisp.h
COleSafeArray::AccessData
배열 데이터에 대한 포인터를 검색합니다.
void AccessData(void** ppvData);
매개 변수
ppvData
배열 데이터에 대한 포인터에 대한 포인터입니다.
설명
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
예시
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
안전한 배열에 대한 메모리를 할당합니다.
void AllocData();
설명
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::AllocDescriptor
안전한 배열의 설명자에 대한 메모리를 할당합니다.
void AllocDescriptor(DWORD dwDims);
매개 변수
dwDims
안전 배열의 차원 수입니다.
설명
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::Attach
개체에 대한 기존 VARIANT
배열의 데이터를 제어합니다 COleSafeArray
.
void Attach(VARIANT& varSrc);
매개 변수
varSrc
VARIANT
개체입니다. varSrc 매개 변수에는 VARTYPE VT_ARRAY 있어야 합니다.
설명
원본 VARIANT
의 형식이 VT_EMPTY 설정됩니다. 이 함수는 현재 배열 데이터(있는 경우)를 지웁니다.
예시
COleSafeArray::AccessData에 대한 예제를 참조하세요.
COleSafeArray::Clear
안전 배열을 지웁니다.
void Clear();
설명
이 함수는 개체를 VT_EMPTY 설정 VARTYPE
하여 안전한 배열을 지웁니다. 현재 콘텐츠가 해제되고 배열이 해제됩니다.
COleSafeArray::COleSafeArray
COleSafeArray
개체를 생성합니다.
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);
매개 변수
saSrc
기존 COleSafeArray
개체이거나 SAFEARRAY
새 COleSafeArray
개체에 복사할 개체입니다.
vtSrc
새 COleSafeArray
개체의 VARTYPE입니다.
psaSrc
새 COleSafeArray
개체에 SAFEARRAY
복사할 포인터입니다.
varSrc
새 COleSafeArray
개체에 복사할 기존 VARIANT
또는 COleVariant
개체입니다.
pSrc
새 COleSafeArray
개체에 VARIANT
복사할 개체에 대한 포인터입니다.
설명
이러한 모든 생성자는 새 COleSafeArray
개체를 만듭니다. 매개 변수가 없으면 빈 COleSafeArray
개체가 만들어집니다(VT_EMPTY). COleSafeArray
VARTYPE이 암시적으로(aCOleSafeArray
, COleVariant
또는VARIANT
) 알려진 다른 배열에서 복사된 경우 원본 배열의 VARTYPE이 유지되므로 지정할 필요가 없습니다. VARTYPE을 COleSafeArray
알 수 없는 다른 배열()SAFEARRAY
에서 복사하는 경우 vtSrc 매개 변수에 VARTYPE을 지정해야 합니다.
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::Copy
기존 안전 배열의 복사본을 만듭니다.
void Copy(LPSAFEARRAY* ppsa);
매개 변수
ppsa
새 배열 설명자를 반환할 위치에 대한 포인터입니다.
설명
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::Create
배열에 대한 데이터를 할당하고 초기화합니다.
void Create(
VARTYPE vtSrc,
DWORD dwDims,
DWORD* rgElements);
void Create(
VARTYPE vtSrc,
DWORD dwDims,
SAFEARRAYBOUND* rgsabounds);
매개 변수
vtSrc
배열의 기본 형식(즉, 배열의 각 요소에 대한 VARTYPE)입니다. VARTYPE은 변형 형식의 하위 집합으로 제한됩니다. VT_ARRAY VT_BYREF 플래그를 설정할 수 없습니다. VT_EMPTY 및 VT_NULL 배열에 유효한 기본 형식이 아닙니다. 다른 모든 유형은 합법적입니다.
dwDims
배열의 차원 수입니다. Redim을 사용하여 배열을 만든 후에 변경할 수 있습니다.
rgElements
배열의 각 차원에 대한 요소 수의 배열에 대한 포인터입니다.
rgsabounds
배열에 할당할 경계 벡터(각 차원마다 하나씩)에 대한 포인터입니다.
설명
이 함수는 필요한 경우 현재 배열 데이터를 지웁 수 있습니다. 오류 발생 시 함수는 CMemoryException을 throw합니다.
예시
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
새 1차원 COleSafeArray
개체를 만듭니다.
void CreateOneDim(
VARTYPE vtSrc,
DWORD dwElements,
const void* pvSrcData = NULL,
long nLBound = 0);
매개 변수
vtSrc
배열의 기본 형식(즉, 배열의 각 요소에 대한 VARTYPE)입니다.
dwElements
배열의 요소 수입니다. ResizeOneDim을 사용하여 배열을 만든 후에 변경할 수 있습니다.
pvSrcData
배열에 복사할 데이터에 대한 포인터입니다.
nLBound
배열의 하한입니다.
설명
이 함수는 배열에 대한 데이터를 할당하고 초기화하며, 포인터 pvSrcData 가 NULL이 아닌 경우 지정된 데이터를 복사합니다.
오류 발생 시 함수는 CMemoryException을 throw합니다.
예시
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
기존 배열 설명자와 배열의 모든 데이터를 삭제합니다.
void Destroy();
설명
개체가 배열에 저장되면 각 개체가 해제됩니다. 오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::D estroyData
안전한 배열의 모든 데이터를 삭제합니다.
void DestroyData();
설명
개체가 배열에 저장되면 각 개체가 해제됩니다. 오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::D estroyDescriptor
안전한 배열의 설명자를 삭제합니다.
void DestroyDescriptor();
설명
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
COleSafeArray::D etach
개체에서 COleSafeArray
데이터를 분리 VARIANT
합니다.
VARIANT Detach();
Return Value
개체의 기본 VARIANT
값입니다 COleSafeArray
.
설명
이 함수는 개체의 VARTYPE을 VT_EMPTY 설정하여 안전한 배열의 데이터를 분리합니다. Windows 함수 VariantClear를 호출하여 배열을 해제하는 것은 호출자의 책임입니다.
오류 발생 시 함수는 COleException을 throw합니다.
예시
COleSafeArray::P utElement에 대한 예제를 참조하세요.
COleSafeArray::GetByteArray
안전 배열의 내용을 .에 CByteArray
복사합니다.
void GetByteArray(CByteArray& bytes);
매개 변수
bytes
CByteArray 개체에 대한 참조입니다 .
COleSafeArray::GetDim
개체의 차원 수를 반환합니다 COleSafeArray
.
DWORD GetDim();
Return Value
안전 배열의 차원 수입니다.
예시
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
안전 배열의 단일 요소를 검색합니다.
void GetElement(
long* rgIndices,
void* pvData);
매개 변수
rgIndices
각 배열 차원의 인덱스 배열에 대한 포인터입니다.
pvData
배열의 요소를 배치할 위치에 대한 포인터입니다.
설명
이 함수는 요소를 검색하기 전과 SafeArrayUnlock
후에 Windows 함수 SafeArrayLock
를 자동으로 호출합니다. 데이터 요소가 문자열, 개체 또는 변형인 경우 함수는 올바른 방식으로 요소를 복사합니다. 매개 변수 pvData 는 요소를 포함할 만큼 충분히 큰 버퍼를 가리킵니다.
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
예시
//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
개체의 요소 크기를 검색 COleSafeArray
합니다.
DWORD GetElemSize();
Return Value
안전한 배열 요소의 크기(바이트)입니다.
COleSafeArray::GetLBound
개체의 모든 차원에 대한 하한값을 COleSafeArray
반환합니다.
void GetLBound(
DWORD dwDim,
long* pLBound);
매개 변수
dwDim
하한을 가져올 배열 차원입니다.
pLBound
하한을 반환할 위치에 대한 포인터입니다.
설명
오류 발생 시 함수는 COleException을 throw합니다.
예시
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
1차원 COleSafeArray
개체의 요소 수를 반환합니다.
DWORD GetOneDimSize();
Return Value
1차원 안전 배열의 요소 수입니다.
예시
COleSafeArray::CreateOneDim에 대한 예제를 참조하세요.
COleSafeArray::GetUBound
안전 배열의 모든 차원에 대한 상한을 반환합니다.
void GetUBound(
DWORD dwDim,
long* pUBound);
매개 변수
dwDim
상한을 가져올 배열 차원입니다.
pUBound
상한을 반환할 위치에 대한 포인터입니다.
설명
오류 발생 시 함수는 COleException을 throw합니다.
예시
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
배열의 잠금 수를 증가시키고 배열 설명자의 배열 데이터에 대한 포인터를 배치합니다.
void Lock();
설명
오류 발생 시 COleException이 throw됩니다.
배열 설명자의 포인터는 호출될 때까지 Unlock
유효합니다. 호출을 Lock
중첩할 수 있습니다. 동일한 수의 호출 Unlock
이 필요합니다.
배열이 잠겨 있는 동안에는 삭제할 수 없습니다.
COleSafeArray::operator LPCVARIANT
이 개체의 기본 구조에 액세스하려면 이 COleSafeArray
캐스팅 연산자를 VARIANT
호출합니다.
operator LPCVARIANT() const;
COleSafeArray::operator LPVARIANT
이 개체의 기본 구조에 액세스하려면 이 COleSafeArray
캐스팅 연산자를 VARIANT
호출합니다.
operator LPVARIANT();
설명
이 함수에서 VARIANT
반환된 포인터에서 액세스하는 구조체의 값을 변경하면 이 개체의 값이 COleSafeArray
변경됩니다.
COleSafeArray::operator =
이러한 오버로드된 할당 연산자는 원본 값을 이 COleSafeArray
개체에 복사합니다.
COleSafeArray& operator=(const COleSafeArray& saSrc);
COleSafeArray& operator=(const VARIANT& varSrc);
COleSafeArray& operator=(LPCVARIANT pSrc);
COleSafeArray& operator=(const COleVariant& varSrc);
설명
각 연산자에 대한 간략한 설명은 다음과 같습니다.
operator =( saSrc ) 기존
COleSafeArray
개체를 이 개체에 복사합니다.operator =( varSrc ) 기존 또는
COleVariant
배열을VARIANT
이 개체에 복사합니다.operator =( pSrc ) pSrc 에서
VARIANT
액세스하는 배열 개체를 이 개체에 복사합니다.
COleSafeArray::operator ==
이 연산자는 두 배열(SAFEARRAY
, VARIANT
, COleVariant
또는 COleSafeArray
배열)을 비교하고 0이 아니면 0이 아닌 배열을 반환합니다. 그렇지 않으면 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;
설명
두 배열은 같은 수의 차원이 있고, 각 차원의 크기가 같고, 요소 값이 같으면 동일합니다.
COleSafeArray::operator <<
COleSafeArray
삽입(<<) 연산자는 개체를 보관에 대한 진단 덤프 및 저장 COleSafeArray
을 지원합니다.
CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
COleSafeArray& saSrc);
COleSafeArray::P trOfIndex
인덱스 값으로 지정된 요소에 대한 포인터를 반환합니다.
void PtrOfIndex(
long* rgIndices,
void** ppvData);
매개 변수
rgIndices
배열의 요소를 식별하는 인덱스 값의 배열입니다. 요소의 모든 인덱스를 지정해야 합니다.
ppvData
반환 시 rgIndices의 값으로 식별되는 요소에 대한 포인터입니다.
COleSafeArray::P utElement
단일 요소를 배열에 할당합니다.
void PutElement(
long* rgIndices,
void* pvData);
매개 변수
rgIndices
각 배열 차원의 인덱스 배열에 대한 포인터입니다.
pvData
배열에 할당할 데이터에 대한 포인터입니다. VT_DISPATCH, VT_UNKNOWN 및 VT_BSTR 변형 형식은 포인터이며 다른 수준의 간접 참조가 필요하지 않습니다.
설명
이 함수는 요소를 할당하기 전과 후에 Windows 함수 SafeArrayLock 및 SafeArrayUnlock 을 자동으로 호출합니다. 데이터 요소가 문자열, 개체 또는 Variant이면 함수는 이를 올바르게 복사하고 기존 요소가 문자열, 개체 또는 Variant이면 제대로 지워집니다.
배열에는 여러 잠금이 있을 수 있으므로 다른 작업에 의해 배열이 잠긴 동안 요소를 배열에 삽입할 수 있습니다.
오류 발생 시 함수는 CMemoryException 또는 COleException을 throw합니다.
예시
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
안전 배열의 최적(맨 오른쪽) 경계를 변경합니다.
void Redim(SAFEARRAYBOUND* psaboundNew);
매개 변수
psaboundNew
바인딩된 새 배열을 포함하는 새 안전한 배열 바인딩 구조체에 대한 포인터입니다. 배열의 최소 중요 차원만 변경할 수 있습니다.
설명
오류 발생 시 함수는 COleException을 throw합니다.
COleSafeArray::ResizeOneDim
1차원 COleSafeArray
개체의 요소 수를 변경합니다.
void ResizeOneDim(DWORD dwElements);
매개 변수
dwElements
1차원 안전 배열의 요소 수입니다.
설명
오류 발생 시 함수는 COleException을 throw합니다.
예시
COleSafeArray::CreateOneDim에 대한 예제를 참조하세요.
COleSafeArray::UnaccessData
배열의 잠금 수를 감소시키고 검색한 AccessData
포인터를 무효화합니다.
void UnaccessData();
설명
오류 발생 시 함수는 COleException을 throw합니다.
예시
COleSafeArray::AccessData에 대한 예제를 참조하세요.
COleSafeArray::Unlock
해제하거나 크기를 조정할 수 있도록 배열의 잠금 수를 줄입니다.
void Unlock();
설명
이 함수는 배열의 데이터에 대한 액세스가 완료된 후에 호출됩니다. 오류 발생 시 COleException이 throw됩니다.