代码如下:
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问题:
为什么读出的数据总是最后一个?
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问题:
为什么读出的数据总是最后一个?
解决方案 »
- 关于_variant_t
- VC release下出现的连接错误
- 鼠标窗口跟随如何实现?
- error C2440: 'type cast'错误
- mschart数据输入问题,在线等!急
- 不明白不这几个类之间有什么关系?
- SetBkMode的问题
- 如何用VC写一个程序,使得用户不登录网域就无法正常进入Windows98系统
- 井底求救2:请你告诉我vc/vc++的不同
- 制作安装程序用什么好?哪有下载?
- 一个简单的问题,我把一个菜单项的属性checked改成TRUE,怎么在我点击的时候把钩消掉,再点击的时候打钩
- 关于QueueUserAPC和SetThreadIdealProcessor这两个api的问题
hr = SafeArrayAccessData(psa,reinterpret_cast<void **>(&pbstr));
for(int i=0;i<7;i++)
{
printf("\n %s",(char*)pbstr[i});
}
hr = SafeArrayUnaccessData(psa);