人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現在的位置:程序化交易>> 期貨公式>> 金字塔等>> 金字塔知識>>正文內容

如何用SAFEARRAY向VBS傳遞數組 [金字塔]

  • 咨詢內容:

    最近寫了個MFC Dll ,用VBS成功的向C++的Dll里傳遞了數組,可是處理完畢之后,我卻不知道怎樣傳回來了。

    我的函數體如下:

    BaoHanTest(const VARIANT FAR& vbkh, const VARIANT FAR& vbkl,long length, VARIANT FAR& buffer)

    其中vbkh,vbkl,length都是vbs傳給dll的,這部分C++獲取數據沒問題,buffer是用來傳出數組的

    需要傳給vbs的數組是這樣定義的:

     float *kh=new float [length+1];

    里面已經放好了數據,如今想通過buffer把它傳回VBS,用Array()接受,    例如,object.函數名 Array

    網上說用SAFEARRAY,可是我傳回去的都接受不到,不知道怎樣弄

     

  • 金字塔客服:

    給你一段金字塔的C++代碼

     

    VARIANT IFormulaRunTime::GetVARDATA(LPCTSTR Name)
    {
     COleSafeArray saRet;
     if(!m_pCallBack->m_pExp)
      return saRet.Detach();
     
     if(GetDataSize() == 0)
      return saRet.Detach();
     
     int nLineIndex = m_pCallBack->GetLineIndex(Name);
     if(nLineIndex < 0)
      return saRet.Detach();

     // Create the safe-array...
     saRet.CreateOneDim(VT_VARIANT, m_pCallBack->m_pRunTime->GetMainView()->m_pMarketData->m_dwDataNumber+1);
     
     // Initialize it with values...
     long lArrayIndex[1];
     for(UINT i = 0; i <= m_pCallBack->m_pRunTime->GetMainView()->m_pMarketData->m_dwDataNumber; i++)
     {
      int nIndex = i * m_pCallBack->m_pExp->m_nLineNum + nLineIndex;
      if(nIndex >= (int)m_pCallBack->m_pExp->m_arLineData.size())
      {
       return saRet.Detach();
      }

      lArrayIndex[0] = i;
      if(m_pCallBack->m_pExp->m_arLineData.m_pData[nIndex].m_bInvalid)
      {
       _variant_t vt(m_pCallBack->m_pExp->m_arLineData.m_pData[nIndex].m_dblVal);
       saRet.PutElement(lArrayIndex, &vt);
      }
      else
      {
       _variant_t vt(g_fInvalid);
       saRet.PutElement(lArrayIndex, &vt);
      }
     }
     
     // Return the safe-array encapsulated in a VARIANT...
     VARIANT vt = saRet.Detach();
     return vt;
    }

     

  • 用戶回復: 您好,我按照上面的思想寫了個測試用例:

     VARIANT varColInfo[3];
    //初始化 VARIANTs
    for (int m = 0; m < 3; m++)
    VariantInit(&varColInfo[m]);

    // 每一列
    varColInfo[0].vt = VT_UI4;
    varColInfo[0].lVal = 1;


    varColInfo[1].vt = VT_UI4;
    varColInfo[1].lVal = 2;

    COleSafeArray sa;
    //創造一維
    //用varColInfo初始化
    sa.CreateOneDim(VT_VARIANT, 2, varColInfo);

     // 返回
     VARIANT vt = sa.Detach();
     return vt;

    VARIANT VBSAddin::BaoHanTest(){ 剛才的那段代碼} 在vbs里調用如下: dim nkh(1)
     Dim MyAddin
       Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
      nkh= MyAddin.BaoHanTest()
            msgbox nkh(0)提示 運行時錯誤 ,描述為類型不匹配,是我在vbs里調用錯誤嗎,應該怎樣調用?

     

  • 網友回復: 把你的C++工程,去掉編譯的中間文件,把工程打包壓縮過來我們幫你看看

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 1145508240  有需要幫忙請點擊這里留言!!!進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 亚洲国产一区二区三区最新 | 黄色a级片在线观看 | 免费观看黄色a一级视频播放 | 在线观看 中文字幕 | 最近中文字幕国语完整视频 | 亚亚洲乱码一二三四区 | 成人影院免费在线观看 | 一本大道香蕉高清视频在线 | 亚洲美女aⅴ久久久91 | h网站免费看 | 123日本不卡在线观看 | 看黄色一级 | 69黄在线看片免费视频 | 日韩成人av在线 | 韩国伦理剧在线看 | 日本三级唾液浓厚在线观看 | 手机看片1024精品国产 | 免费视频黄 | 国产成人精品日本亚洲语音1 | 中国男女全黄大片 | 一区二区高清在线 | 成在线人永久免费播放视频 | 又爽又大又光又色的午夜视频 | 欧美高清在线精品一区 | 波多野结衣在线视频播放 | 亚洲高清日韩精品第一区 | 99视频在线看观免费 | 日韩久久网 | 欧美日韩在线视频播放 | 两性色午夜视频免费老司机 | 日本深夜18免费看片高清网 | 成人久久18免费软件 | 天天爽天天操 | 欧美香蕉 | 国产高清在线观看麻豆 | 三级国产精品一区二区 | 亚洲人成网站在线观看青青 | 色综合天天射 | 手机午夜视频 | 午夜在线观看视频 | 天堂五月天 |