COleSafeArray クラス
任意の型および次元の配列を扱うクラスです。
構文
class COleSafeArray : public tagVARIANT
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
COleセーフArray::COleセーフArray | COleSafeArray オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
COleセーフArray::AccessData | 配列データへのポインターを取得します。 |
COleセーフArray::AllocData | 配列のメモリを割り当てます。 |
COleセーフArray::AllocDescriptor | セーフ配列記述子のメモリを割り当てます。 |
COleセーフArray::Attach | オブジェクトに既存 VARIANT の配列 COleSafeArray を制御します。 |
COleセーフArray::Clear | 基になる VARIANT データをすべて解放します。 |
COleセーフArray::Copy | 既存の配列のコピーを作成します。 |
COleセーフArray::Create | 安全な配列を作成します。 |
COleセーフArray::CreateOneDim | 1 次元 COleSafeArray オブジェクトを作成します。 |
COleセーフArray::D estroy | 既存の配列を破棄します。 |
COleセーフArray::D estroyData | セーフ配列内のデータを破棄します。 |
COleセーフArray::D estroyDescriptor | セーフ配列の記述子を破棄します。 |
COleセーフArray::D etach | オブジェクトから VARIANT 配列を COleSafeArray デタッチします (データが解放されないようにします)。 |
COleセーフArray::GetByteArray | セーフ配列の内容を CByteArray にコピーします。 |
COleセーフArray::GetDim | 配列内の次元数を返します。 |
COleセーフArray::GetElement | セーフ配列の 1 つの要素を取得します。 |
COleセーフArray::GetElemSize | セーフ配列内の 1 つの要素のサイズをバイト単位で返します。 |
COleセーフArray::GetLBound | セーフ配列の次元の下限を返します。 |
COleセーフArray::GetOneDimSize | 1 次元 COleSafeArray オブジェクト内の要素の数を返します。 |
COleセーフArray::GetUBound | セーフ配列の次元の上限を返します。 |
COleセーフArray::Lock | 配列のロックカウントをインクリメントし、配列記述子内の配列データへのポインターを配置します。 |
COleセーフArray::P trOfIndex | インデックス付き要素へのポインターを返します。 |
COleセーフArray::P utElement | 1 つの要素を配列に割り当てます。 |
COleセーフArray::Redim | セーフ配列の最下位 (右端) の境界を変更します。 |
COleセーフArray::ResizeOneDim | 1 次元 COleSafeArray オブジェクト内の要素の数を変更します。 |
COleセーフArray::UnaccessData | 配列のロック数をデクリメントし、によって AccessData 取得されたポインターを無効にします。 |
COleセーフArray::Unlock | 解放またはサイズ変更できるように、配列のロック数をデクリメントします。 |
パブリック演算子
名前 | 説明 |
---|---|
COleセーフArray::operator LPCVARIANT | オブジェクトの基になる VARIANT 構造体に COleSafeArray アクセスします。 |
COleセーフArray::operator LPVARIANT | オブジェクトの基になる VARIANT 構造体に COleSafeArray アクセスします。 |
COleセーフArray::operator = | 値COleSafeArray をオブジェクト (SAFEARRAY 、VARIANT COleVariant またはCOleSafeArray 配列) にコピーします。 |
COleセーフArray::operator == | 2 つのバリアント配列 (SAFEARRAY 、、、VARIANT COleVariant またはCOleSafeArray 配列) を比較します。 |
COleSafeArray::operator << |
オブジェクトの内容を COleSafeArray ダンプ コンテキストに出力します。 |
解説
COleSafeArray
は OLE VARIANT
構造体から派生します。 OLE SAFEARRAY
メンバー関数は、バイトの 1 次元配列用に特別に設計されたメンバー関数のセットと同様に使用できます COleSafeArray
。
継承階層
tagVARIANT
COleSafeArray
要件
ヘッダー : afxdisp.h
COleセーフArray::AccessData
配列データへのポインターを取得します。
void AccessData(void** ppvData);
パラメーター
ppvData
配列データへのポインターへのポインター。
解説
エラーが発生すると、関数は CMemoryException または COleException をスローします。
例
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();
}
}
COleセーフArray::AllocData
セーフ配列のメモリを割り当てます。
void AllocData();
解説
エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::AllocDescriptor
セーフ配列の記述子にメモリを割り当てます。
void AllocDescriptor(DWORD dwDims);
パラメーター
dwDims
セーフ配列内の次元の数。
解説
エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::Attach
既存 VARIANT
の配列内のデータをオブジェクトに COleSafeArray
制御します。
void Attach(VARIANT& varSrc);
パラメーター
varSrc
VARIANT
オブジェクト。 varSrc パラメーターには VARTYPE VT_ARRAYが必要です。
解説
ソース VARIANT
の型はVT_EMPTYに設定されます。 この関数は、現在の配列データ (存在する場合) をクリアします。
例
COleセーフArray::AccessData の例を参照してください。
COleセーフArray::Clear
セーフ配列をクリアします。
void Clear();
解説
この関数は、オブジェクトの値をVT_EMPTYに設定 VARTYPE
することで、安全な配列をクリアします。 現在の内容が解放され、配列が解放されます。
COleセーフArray::COleセーフArray
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
オブジェクトにコピーする a SAFEARRAY
へのポインター。
varSrc
新しい COleSafeArray
オブジェクトにコピーする既存の VARIANT
または COleVariant
オブジェクト。
pSrc
新しいCOleSafeArray
オブジェクトにVARIANT
コピーするオブジェクトへのポインター。
解説
これらのコンストラクターはすべて、新しい COleSafeArray
オブジェクトを作成します。 パラメーターがない場合は、空 COleSafeArray
のオブジェクトが作成されます (VT_EMPTY)。 COleSafeArray
VARTYPE が暗黙的に認識されている別の配列 (aCOleSafeArray
、COleVariant
またはVARIANT
) からコピーされた場合、ソース配列の VARTYPE は保持され、指定する必要はありません。 COleSafeArray
VARTYPE が不明SAFEARRAY
な () 別の配列からコピーされる場合は、vtSrc パラメーターに VARTYPE を指定する必要があります。
エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::Copy
既存のセーフ配列のコピーを作成します。
void Copy(LPSAFEARRAY* ppsa);
パラメーター
ppsa
新しい配列記述子を返す場所へのポインター。
解説
エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::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
配列に割り当てる境界のベクトル (次元ごとに 1 つ) へのポインター。
解説
この関数は、必要に応じて現在の配列データをクリアします。 エラーが発生すると、関数は CMemoryException をスロー します。
例
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);
COleセーフArray::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 をスロー します。
例
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]);
COleセーフArray::D estroy
既存の配列記述子と配列内のすべてのデータを破棄します。
void Destroy();
解説
オブジェクトが配列に格納されている場合、各オブジェクトは解放されます。 エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::D estroyData
セーフ配列内のすべてのデータを破棄します。
void DestroyData();
解説
オブジェクトが配列に格納されている場合、各オブジェクトは解放されます。 エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::D estroyDescriptor
セーフ配列の記述子を破棄します。
void DestroyDescriptor();
解説
エラーが発生すると、関数は CMemoryException または COleException をスローします。
COleセーフArray::D etach
オブジェクトからデータをVARIANT
COleSafeArray
デタッチします。
VARIANT Detach();
戻り値
オブジェクト内のCOleSafeArray
基になるVARIANT
値。
解説
この関数は、オブジェクトの VARTYPE を VT_EMPTYに設定することで、セーフ配列内のデータをデタッチします。 Windows 関数 VariantClear を呼び出して配列を解放するのは呼び出し元の責任です。
エラーが発生すると、関数は COleException を スローします。
例
COleセーフArray::P utElement の例を参照してください。
COleセーフArray::GetByteArray
セーフ配列 CByteArray
の内容をコピーします。
void GetByteArray(CByteArray& bytes);
パラメーター
bytes
CByteArray オブジェクトへの参照。
COleセーフArray::GetDim
オブジェクト内の寸法の数を COleSafeArray
返します。
DWORD GetDim();
戻り値
セーフ配列内の次元の数。
例
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);
COleセーフArray::GetElement
セーフ配列の 1 つの要素を取得します。
void GetElement(
long* rgIndices,
void* pvData);
パラメーター
rgIndices
インデックスの配列へのポインター (配列の次元ごと)。
pvData
配列の要素を配置する場所へのポインター。
解説
この関数は、要素を取得する前とSafeArrayUnlock
後に、Windows 関数SafeArrayLock
を自動的に呼び出します。 データ要素が文字列、オブジェクト、またはバリアントの場合、関数は正しい方法で要素をコピーします。 パラメーター pvData は、要素を格納するのに十分な大きさのバッファーを指す必要があります。
エラーが発生すると、関数は CMemoryException または COleException をスローします。
例
//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;
}
}
}
COleセーフArray::GetElemSize
オブジェクト内の要素のサイズを COleSafeArray
取得します。
DWORD GetElemSize();
戻り値
セーフ配列の要素のサイズ (バイト単位)。
COleセーフArray::GetLBound
オブジェクトの次元の下限を COleSafeArray
返します。
void GetLBound(
DWORD dwDim,
long* pLBound);
パラメーター
dwDim
下限を取得する対象の配列の次元。
pLBound
下限を返す場所へのポインター。
解説
エラーが発生すると、関数は COleException を スローします。
例
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);
COleセーフArray::GetOneDimSize
1 次元 COleSafeArray
オブジェクト内の要素の数を返します。
DWORD GetOneDimSize();
戻り値
1 次元セーフ配列内の要素の数。
例
COleセーフArray::CreateOneDim の例を参照してください。
COleセーフArray::GetUBound
セーフ配列の次元の上限を返します。
void GetUBound(
DWORD dwDim,
long* pUBound);
パラメーター
dwDim
上限を取得する対象の配列の次元。
pUBound
上限を返す場所へのポインター。
解説
エラーが発生すると、関数は COleException を スローします。
例
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);
COleセーフArray::Lock
配列のロックカウントをインクリメントし、配列記述子内の配列データへのポインターを配置します。
void Lock();
解説
エラーが発生すると、COleException がスロー されます。
配列記述子内のポインターは、呼び出されるまで Unlock
有効です。 呼び出しは Lock
入れ子にすることができます。同じ数の呼び出し Unlock
が必要です。
ロックされている間は、配列を削除できません。
COleセーフArray::operator LPCVARIANT
この COleSafeArray
オブジェクトの基になる VARIANT
構造体にアクセスするには、このキャスト演算子を呼び出します。
operator LPCVARIANT() const;
COleセーフArray::operator LPVARIANT
この COleSafeArray
オブジェクトの基になる VARIANT
構造体にアクセスするには、このキャスト演算子を呼び出します。
operator LPVARIANT();
解説
この関数によって返されるポインターによってアクセスされる構造体の VARIANT
値を変更すると、この COleSafeArray
オブジェクトの値が変更されることに注意してください。
COleセーフArray::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) このオブジェクトに既存
VARIANT
またはCOleVariant
配列をコピーします。operator =(pSrc) pSrc によってアクセスされた配列オブジェクトをこのオブジェクトにコピー
VARIANT
します。
COleセーフArray::operator ==
この演算子は、2 つの配列 (SAFEARRAY
、またはCOleSafeArray
配列) を比較し、VARIANT
COleVariant
等しい場合は 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;
解説
2 つの配列は、等しい次元数、各次元のサイズが等しい場合、および等しい要素値を持つ場合に等しくなります。
COleSafeArray::operator <<
挿入 (<<) 演算子はCOleSafeArray
、アーカイブへのオブジェクトのCOleSafeArray
診断ダンプと格納をサポートします。
CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
COleSafeArray& saSrc);
COleセーフArray::P trOfIndex
インデックス値で指定された要素へのポインターを返します。
void PtrOfIndex(
long* rgIndices,
void** ppvData);
パラメーター
rgIndices
配列の要素を識別するインデックス値の配列。 要素のすべてのインデックスを指定する必要があります。
ppvData
返された場合、rgIndices 内の値によって識別される要素へのポインター。
COleセーフArray::P utElement
1 つの要素を配列に割り当てます。
void PutElement(
long* rgIndices,
void* pvData);
パラメーター
rgIndices
インデックスの配列へのポインター (配列の次元ごと)。
pvData
配列に割り当てるデータへのポインター。 VT_DISPATCH、VT_UNKNOWN、およびVT_BSTRバリアント型はポインターであり、別のレベルの間接参照は必要ありません。
解説
この関数は、要素の割り当て前と割り当て後に Windows 関数 セーフArrayLock と セーフArrayUnlock を自動的に呼び出します。 データ要素が文字列、オブジェクト、バリアントの場合は、関数によって適切にコピーされ、既存の要素が文字列、オブジェクト、バリアントの場合は、関数によって適切にクリアされます。
配列は多重にロックできるため、配列が別の操作によってロックされている間に要素を配列に配置できることに注意してください。
エラーが発生すると、関数は CMemoryException または COleException をスローします。
例
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();
}
COleセーフArray::Redim
セーフ配列の最下位 (右端) の境界を変更します。
void Redim(SAFEARRAYBOUND* psaboundNew);
パラメーター
psboundNew
新しい配列バインドを含む、新しい安全な配列バインド構造体へのポインター。 変更できるのは、配列の最下位次元だけです。
解説
エラーが発生すると、関数は COleException を スローします。
COleセーフArray::ResizeOneDim
1 次元 COleSafeArray
オブジェクト内の要素の数を変更します。
void ResizeOneDim(DWORD dwElements);
パラメーター
dwElements
1 次元セーフ配列内の要素の数。
解説
エラーが発生すると、関数は COleException を スローします。
例
COleセーフArray::CreateOneDim の例を参照してください。
COleセーフArray::UnaccessData
配列のロック数をデクリメントし、によって AccessData
取得されたポインターを無効にします。
void UnaccessData();
解説
エラーが発生すると、関数は COleException を スローします。
例
COleセーフArray::AccessData の例を参照してください。
COleセーフArray::Unlock
解放またはサイズ変更できるように、配列のロック数をデクリメントします。
void Unlock();
解説
この関数は、配列内のデータへのアクセスが完了した後に呼び出されます。 エラーが発生すると、COleException がスロー されます。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示