怎么把 double 的数组转化成 VARIANT
如:
double dat[100];
VARIANT f;f=dat ???
该怎么做啊
在线等候!!!
谢谢

解决方案 »

  1.   

    VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。
    对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:
    VARIANT va;
    int a=2001;
    va.vt=VT_I4;///指明整型数据
    va.lVal=a; ///赋值对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:
    Byte bVal;  // VT_UI1. 
    Short iVal;  // VT_I2. 
    long lVal;  // VT_I4. 
    float fltVal;  // VT_R4. 
    double dblVal;  // VT_R8. 
    VARIANT_BOOL boolVal;  // VT_BOOL. 
    SCODE scode;  // VT_ERROR. 
    CY cyVal;  // VT_CY. 
    下面略
    参照http://dev.csdn.net/develop/article/12/12365.shtm
      

  2.   

    VARIANT f;
    double dat[100];
    f.vt = VT_I8; //指明整型数据 
    f.lVal = dat[i]; //赋值
      

  3.   

    我是想把整个数组都赋给 VARIANT
      

  4.   

    VARIANT f;
    VARIANT s;
    VARIANT inc;
    VARIANT t; SAFEARRAYBOUND rgsabound[1];
    double dat[100];
    long i; f.vt=VT_ARRAY | VT_R8;
    rgsabound[0].lLbound=0;
    rgsabound[0].cElements=100;
    f.parray=SafeArrayCreate(VT_R8, 1, rgsabound);
    if(f.parray == NULL){
    return ;
        }
    for(i=0;i<100;i++) dat[i]=sin(3.1415926*4*i/100);
    for(i=0;i<100;i++) SafeArrayPutElement(f.parray , &i, &dat[i]);
    s.vt=VT_I4;
    s.lVal=0;
    inc.vt=VT_I4;
    inc.lVal=1;
    t.vt=VT_BOOL;
    t.boolVal=VARIANT_TRUE;
    m_graph.PlotY(f,s,inc,t);
    SafeArrayDestroy(f.parray);