Как из mfc передать в Qt Activex массив float или double?



  • Я пишу activex компонент (с использованием Qt). Как переслать массив double в qt activex компонент из моего приложения? Если делать через QByteArray, то возникает

    ошибка несоответствие типов. Через QVariant не получилось, пересылается пустой массив.

    Пробовал два пути. Оба из них не работают.

    1. через QByteArray
      @void MyQtActivex::setData(QByteArray &_data, int len)
      {
      float* mydata = (float*)(_data.constData());
      .....
      }@
      @void CmsvctestDlg::OnBnClickedButton1()
      {
      SAFEARRAY pSA;
      SAFEARRAYBOUND sab[1];
      sab[0].lLbound = 0;
      sab[0].cElements = len
      4;

    pSA = SafeArrayCreate (VT_ARRAY | VT_UI1, 1, sab);
    SafeArrayAccessData (pSA, (void **) &pData);

    memcpy (pData, (BYTE*)_data, len*4);

    _myQtActivex.setData((SAFEARRAY ** )pSA->pvData, len);
    }@

    1. через QVariant
      @void MyQtActivex::setData(QVariant& psaArray, int _len)
      {
      VARIANT newYVals;
      SAFEARRAY* psaYVals;
      QByteArray _type("double");
      bool _ok = QVariantToVARIANT(psaArray, newYVals, _type);
      ....
      ....
      }@

    @void CmsvctestDlg::OnBnClickedButton1()
    {
    COleSafeArray arry;
    arry.CreateOneDim(VT_R8, len);
    long i;
    for(i=0; i<len; i++)
    {
    double _z = oscp_data_32f[i];
    arry.PutElement(&i, &_z);
    }

    _myQtActivex.setData( COleVariant(arry), len);
    }@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.