對於C++的世界來說,這是一個相對較新的東西。我希望從多維SAFEARRAY訪問數據。但是,當我嘗試檢索該值時,出現錯誤0xC0000005:訪問衝突讀取位置0x40e3e300。下面附上的是我的代碼,標記的線是它出錯的地方。希望有人能夠闡明如何解決這個問題。從C++中的二維Safearray獲得價值
SAFEARRAY *ArrayCrosstabInfo = GetMainFrame().m_epsComHelper->GetCrosstab(m_arrayFieldnames,start,end);
COleSafeArray ArrayCrosstab(*ArrayCrosstabInfo,VT_SAFEARRAY);
BSTR *DataValue;
ArrayCrosstab.AccessData((void**) &DataValue);
long lUBoundX;
long lUBoundY;
ArrayCrosstab.GetUBound(1,&lUBoundX);
ArrayCrosstab.GetUBound(2,&lUBoundY);
long lOffset = 2;
int nFieldIndex = 0;
if (lUBoundX > 0 && lUBoundY > 0)
{
//only interested in DataValue[0,x]
for (long i = lOffset; i<=lUBoundY; i++)
{
_bstr_t theData((BSTR)DataValue[0,i],FALSE); <==ERRORS HERE
//Display (BSTR)theData;
}
}
感謝您清除索引部分,不是很確定。關於從0開始的索引,我實際上希望我的循環從位置3開始,因此是偏移量。進行了這些更改,但仍然從數組中讀取問題(同樣的錯誤)。順便說一句,該數組的維度[2] [6] ... – jw33 2010-07-29 23:08:05