首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

BCB在COM中如何避免javascript脚本传递的数组

2012-02-29 
BCB在COM中如何处理javascript脚本传递的数组网上都是VC版本的,再就是VBSCRIPT脚本的比较多,我一直用JAVAS

BCB在COM中如何处理javascript脚本传递的数组
网上都是VC版本的,再就是VBSCRIPT脚本的比较多,我一直用JAVASCRIPT,所以一直想写一个
最近刚刚解决了这个问题,看见BCB的帖子上了头版,我也来分享一下,高手们多提点意见。

C/C++ code
//枚举类型转换成数组HRESULT VariantEnumToDoubles(IDispatch* disp,double *&dArray,int &length){        CComVariant resultV;        HRESULT hr;        DISPPARAMS noArgs = {NULL,NULL,0,0};        hr = disp->Invoke(DISPID_NEWENUM,IID_NULL,                LOCALE_SYSTEM_DEFAULT,DISPATCH_PROPERTYGET,                &noArgs,&resultV,NULL,NULL);        if(resultV.vt != VT_UNKNOWN && resultV.vt != VT_DISPATCH)                return DISP_E_BADPARAMCOUNT;        CComQIPtr <IEnumVARIANT> pEnum(resultV.punkVal);        length = 0;        hr =S_OK;        while(hr == S_OK)        {                hr = pEnum->Skip(1);                if(hr == S_OK)                        length++;        }               dArray = new double[length];        int nCount = 0;        CComVariant elemV;        pEnum->Reset();        hr = S_OK;        while(hr == S_OK)        {                hr = pEnum->Next(1,&elemV,NULL);                if(elemV.vt !=VT_R8 && elemV.vt !=VT_I4)                {                        hr =S_FALSE;                }                else if(elemV.vt == VT_I4)                {                        int itmp = elemV.intVal;                        dArray[nCount] = itmp;                }                else if(elemV.vt == VT_R8)                {                        double dtmp = elemV.dblVal;                        dArray[nCount] = dtmp;                }                if(hr == S_OK)                        nCount++;        }        return S_OK;}//=============================================================



[解决办法]
帖子该加精
[解决办法]
同意!
========================================
CSDN [size=18px]sczyq[/size]

[解决办法]
不错不错
[解决办法]
^_^,赞...
[解决办法]
好,我来推荐到首页。

热点排行