VARIANT 类使用说明
varSNArray->vt = VT_EMPTY;
char* p11 = _com_util::ConvertBSTRToString(strP11Name);
int nResult = 0;
CKeys keys;
nResult = keys.InitDll(p11);
if( 0!= nResult)
{
return S_OK;
}
string strSN = keys.GetSN();
vector<string> vctFiles;
int nPos = strSN.find_first_of(";");
while(nPos != -1)
{
string strSN = strSN.substr(0, nPos);
vctFiles.push_back(strSN);
strSN = strSN.substr(nPos+1);
nPos = strSN.find_first_of(";");
}
vector<string>::iterator iter = vctFiles.begin();
//初始化,待返回数组
SAFEARRAYBOUND pSab[1];//一维数组
pSab[0].lLbound = 0;
pSab[0].cElements = vctFiles.size(); //数组中元素的数量
SAFEARRAY *pSa;
pSa=SafeArrayCreate(VT_VARIANT,1,pSab);//创建一维数组
//填数组
LONG i = 0;
while(iter!=vctFiles.end())
{
VARIANT v;
v.vt = VT_BSTR;
v.bstrVal = _com_util::ConvertStringToBSTR((*iter).c_str());
SafeArrayPutElement(pSa,&i,&v);
SysFreeString(v.bstrVal);
iter++,i++;
}
//返回数组
varSNArray-> vt = VT_VARIANT|VT_ARRAY;
varSNArray->parray = pSa; //pSa是生成的一个安全数组