人人爽天天爽夜夜爽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  有需要幫忙請點擊這里留言!!!進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 日韩欧美伦理 | 日韩高清在线二区 | 午夜欧美成人久久久久久 | 欧美视频1| 亚洲欧美日韩在线播放 | 91精品国产乱码在线观看 | 大尺度激烈叫床视频免费 | 色的视频在线观看免费播放 | 一区二区不卡在线 | 99精彩视频 | 精品91麻豆免费免费国产在线 | 一个人在线视频免费观看www | 国产制服丝袜在线 | 日本精品久久久免费高清 | 天天干国产 | 天天操天天操天天射 | 无遮挡无删动漫肉在线观看 | 天天草天天 | 手机看片a永久免费看大片 手机看片91精品一区 | 欧美怡春院 | 免费观看黄色a一级录像 | 18videosex性vr日 | 精品久久香蕉国产线看观看亚洲 | 中文字幕美日韩在线高清 | 日本三级黄色片 | 干妞网在线观看 | 精品视频免费播放 | 香蕉成人国产精品免费看网站 | 九九精品在线 | 天天色天天射综合网 | 制服丝袜在线网站 | 亚洲天堂网2014 | 久久久久久久网站 | 亚洲天堂免费在线视频 | 成人免费视频观看 | 黄色网页在线免费观看 | 在线观看免费国产成人软件 | 做a的视频免费 | 在线观看国产精品日本不卡网 | 免费超爽大片黄 | 黄色三级免费 |