大伊人青草狠狠久久-大伊香蕉精品视频在线-大伊香蕉精品一区视频在线-大伊香蕉在线精品不卡视频-大伊香蕉在线精品视频75-大伊香蕉在线精品视频人碰人

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

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


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 久久青草免费91线频观看站街 | 欧美日韩高清一区二区三区 | 久久久久久久国产精品视频 | 精品三级国产一区二区三区四区 | 欧美一级在线免费观看 | 日韩中文在线视频 | riav久久中文一区二区 | 成人亚洲精品一区 | 在线视频综合视频免费观看 | 九九热这里有精品 | 午夜影院免费在线观看 | 老头与老头同性tube可播放 | 亚洲一区日韩 | 在线视频亚洲一区 | 久久精品国产99国产精品亚洲 | 日韩欧美国产偷亚洲清高 | 一级做性色a爱片久久片 | 免费看一级欧美毛片视频 | 日韩天堂视频 | 欧美激情精品久久久久久不卡 | 97夜夜澡人人爽人人免费 | 伊人久久一本 | 欧美精品国产日韩综合在线 | 欧美高清理论片在线观看 | 亚洲婷婷综合中文字幕第一页 | www.夜夜骑.com | 亚洲国产欧美久久香综合 | 成人综合婷婷国产精品久久免费 | 日本囗交做爰视频欧美 | 国产成人亚洲精品乱码在线观看 | 成人久久免费视频 | 青草福利 | 日韩免费中文字幕 | 四虎永久影院永久影库 | 国产精品合集一区二区 | 国产日韩一区二区三区在线播放 | 亚洲va欧美va国产va天堂影 | 啪啪一级片 | 日本大臿亚洲香蕉大片 | 成人久草 | 久久国产毛片 |