다음을 통해 공유


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 개체이거나 SAFEARRAYCOleSafeArray 개체에 복사할 개체입니다.

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
배열에 할당할 경계 벡터(각 차원마다 하나씩)에 대한 포인터입니다.

설명

이 함수는 필요한 경우 현재 배열 데이터를 지웁 수 있습니다. 오류 발생 시 함수는 CMemoryExceptionthrow합니다.

예시

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이 아닌 경우 지정된 데이터를 복사합니다.

오류 발생 시 함수는 CMemoryExceptionthrow합니다.

예시

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를 호출하여 배열을 해제하는 것은 호출자의 책임입니다.

오류 발생 시 함수는 COleExceptionthrow합니다.

예시

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
하한을 반환할 위치에 대한 포인터입니다.

설명

오류 발생 시 함수는 COleExceptionthrow합니다.

예시

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
상한을 반환할 위치에 대한 포인터입니다.

설명

오류 발생 시 함수는 COleExceptionthrow합니다.

예시

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();

설명

오류 발생 시 COleExceptionthrow됩니다.

배열 설명자의 포인터는 호출될 때까지 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 함수 SafeArrayLockSafeArrayUnlock 을 자동으로 호출합니다. 데이터 요소가 문자열, 개체 또는 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
바인딩된 새 배열을 포함하는 새 안전한 배열 바인딩 구조체에 대한 포인터입니다. 배열의 최소 중요 차원만 변경할 수 있습니다.

설명

오류 발생 시 함수는 COleExceptionthrow합니다.

COleSafeArray::ResizeOneDim

1차원 COleSafeArray 개체의 요소 수를 변경합니다.

void ResizeOneDim(DWORD dwElements);

매개 변수

dwElements
1차원 안전 배열의 요소 수입니다.

설명

오류 발생 시 함수는 COleExceptionthrow합니다.

예시

COleSafeArray::CreateOneDim에 대한 예제를 참조하세요.

COleSafeArray::UnaccessData

배열의 잠금 수를 감소시키고 검색한 AccessData포인터를 무효화합니다.

void UnaccessData();

설명

오류 발생 시 함수는 COleExceptionthrow합니다.

예시

COleSafeArray::AccessData에 대한 예제를 참조하세요.

COleSafeArray::Unlock

해제하거나 크기를 조정할 수 있도록 배열의 잠금 수를 줄입니다.

void Unlock();

설명

이 함수는 배열의 데이터에 대한 액세스가 완료된 후에 호출됩니다. 오류 발생 시 COleExceptionthrow됩니다.

참고 항목

계층 구조 차트
COleVariant 클래스
CRecordset 클래스
CDatabase 클래스