代码如下:
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 8;
psa = SafeArrayCreate(VT_BSTR, 1, rgsabound);
BSTR HUGEP *pbstr;
SafeArrayAccessData(psa, (void HUGEP* FAR*)&pbstr);
pbstr[0] = _bstr_t("U2_DI001203");
pbstr[1] = _bstr_t("U1_PT011204");
pbstr[2] = _bstr_t("U1_DI001201");
pbstr[3] = _bstr_t("U1_DI001202");
pbstr[4] = _bstr_t("U2_PT011203");
pbstr[5] = _bstr_t("U2_PT011204");
pbstr[6] = _bstr_t("U2_DI001201");
pbstr[7] = _bstr_t("U1_PT011205"); SafeArrayUnaccessData(psa);/*-------------------------------------*/
BSTR HUGEP *pbstrtt; long lBound ;
// SafeArrayAccessData(*TagNameArray, (void HUGEP* FAR*)&pbstr);
int lb = psa->rgsabound[0].lLbound;
int count = psa->rgsabound[0].cElements;
SafeArrayGetLBound(psa,1, &lBound);

unsigned short type;
SafeArrayGetVartype(psa, &type) ;
SafeArrayGetVartype(psa, &type) ;

for (i=lb; i<count; i++)
{
BSTR HUGEP bstr;
SafeArrayGetElement(psa,&i,&bstr);
_bstr_t _bstr(bstr, false);
// _bstr_t _bstr(*(pbstr++), false);

char *pStr = (char *) _bstr;
printf("\n %s",pStr);
}
SafeArrayUnaccessData(psa);
执行结果:
U1_PT011205
U1_PT011205
U1_PT011205
U1_PT011205
U1_PT011205
U1_PT011205
U1_PT011205
U1_PT011205问题:
为什么读出的数据总是最后一个?