对于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