比如说有一个double类型的数100,想要传送到COleSafeArray  saValues中应该怎么办??
这是我写的一段程序       const int knMaxAtOnce = 1;
int nStartIndex = 19;
int nVarIndex;
nVarIndex = 1;
double dValue;
BOOL bOK = TRUE;
CString strValue;
COleSafeArray saValues;
DWORD dwElements[1];
LPTSTR pStrz;
double *pdValue; dwElements[0] = knMaxAtOnce;
saValues.Create(VT_VARIANT, 1, dwElements);
saValues.AccessData((void**)&pdValue);
*pdValue =100;
saValues.UnaccessData();
mytrio.SetTable(nStartIndex, nVarIndex, saValues);
在最后一句设置断点,saValues中没有我想要存的100

解决方案 »

  1.   


      int iNums = 100;  double *pData = new double[iNums];
      for(int i=0; i<iNums; i++)
      {
        pData[i] = i;
      }  COleSafeArray ar;
      ar.CreateOneDim(VT_R8, iNums, pData);  ……  delete [] pData;
      

  2.   

    还是不行呢,CreateOneDim是创建一维空间,而iNums是100,是100维的了,pData是每一维存储的个数;
      

  3.   

      int iNums = 1;
     
      double *pData = new double[iNums];
      for(int i=0; i<iNums; i++)
      {
        pData[i] = i;
      }
     
      COleSafeArray ar;
      ar.CreateOneDim(VT_R8, iNums, pData);
     
      ……
     
      delete [] pData;
      

  4.   

      double f = 100;
      COleSafeArray ar;
      ar.CreateOneDim(VT_R8, 1, &f);