精华内容
下载资源
问答
  • VARIANT型变量转换

    千次阅读 2013-11-05 22:26:23
     我们怎么把一个整形或double型等其它的类型赋值给VARIANT型变量呢,或者是VARIANT型变量怎么赋值给int等其它类型呢。 2、 VARIANT是一个结构体,它的结构体如下: struct tagVARIANT {  union {  

    1、 在VC++编程中,我们常常会遇到这样的函数,如:::SetValue(const VARIANTpropVal); 我们怎么把一个整形或double型等其它的类型赋值给VARIANT型变量呢,或者是VARIANT型变量怎么赋值给int等其它类型呢。

    2、 VARIANT是一个结构体,它的结构体如下:

    struct tagVARIANT {

        union {

            struct __tagVARIANT {

                VARTYPE vt;

                WORD    wReserved1;

                WORD    wReserved2;

                WORD    wReserved3;

                union {

                    ULONGLONG     ullVal;       /* VT_UI8               */

                    LONGLONG      llVal;        /* VT_I8                */

                    LONG          lVal;         /* VT_I4                */

                    BYTE          bVal;         /* VT_UI1               */

                    SHORT         iVal;         /* VT_I2                */

                    FLOAT         fltVal;       /* VT_R4                */

                    DOUBLE        dblVal;       /* VT_R8                */

                    VARIANT_BOOL boolVal;      /* VT_BOOL              */

                    _VARIANT_BOOL bool;         /* (obsolete)           */

                    SCODE         scode;        /* VT_ERROR             */

                    CY            cyVal;        /* VT_CY                */

                    DATE          date;         /* VT_DATE              */

                    BSTR          bstrVal;      /* VT_BSTR              */

                    IUnknown *    punkVal;      /* VT_UNKNOWN           */

                    IDispatch *   pdispVal;     /* VT_DISPATCH          */

                    SAFEARRAY *   parray;       /* VT_ARRAY             */

                    BYTE *        pbVal;        /* VT_BYREF|VT_UI1      */

                    SHORT *       piVal;        /* VT_BYREF|VT_I2       */

                    LONG *        plVal;        /* VT_BYREF|VT_I4       */

                    LONGLONG *    pllVal;       /* VT_BYREF|VT_I8       */

                    FLOAT *       pfltVal;      /* VT_BYREF|VT_R4       */

                    DOUBLE *      pdblVal;      /* VT_BYREF|VT_R8       */

                    VARIANT_BOOL *pboolVal;     /* VT_BYREF|VT_BOOL     */

                    _VARIANT_BOOL *pbool;       /* (obsolete)           */

                    SCODE *       pscode;       /* VT_BYREF|VT_ERROR    */

                    CY *          pcyVal;       /* VT_BYREF|VT_CY       */

                    DATE *        pdate;        /* VT_BYREF|VT_DATE     */

                    BSTR *        pbstrVal;     /* VT_BYREF|VT_BSTR     */

                    IUnknown **   ppunkVal;     /* VT_BYREF|VT_UNKNOWN */

                    IDispatch ** ppdispVal;    /* VT_BYREF|VT_DISPATCH */

                    SAFEARRAY ** pparray;      /* VT_BYREF|VT_ARRAY    */

                    VARIANT *     pvarVal;      /* VT_BYREF|VT_VARIANT */

                    PVOID         byref;        /* Generic ByRef        */

                    CHAR          cVal;         /* VT_I1                */

                    USHORT        uiVal;        /* VT_UI2               */

                    ULONG         ulVal;        /* VT_UI4               */

                    INT           intVal;       /* VT_INT               */

                    UINT          uintVal;      /* VT_UINT              */

                    DECIMAL *     pdecVal;      /* VT_BYREF|VT_DECIMAL */

                    CHAR *        pcVal;        /* VT_BYREF|VT_I1       */

                    USHORT *      puiVal;       /* VT_BYREF|VT_UI2      */

                    ULONG *       pulVal;       /* VT_BYREF|VT_UI4      */

                    ULONGLONG *   pullVal;      /* VT_BYREF|VT_UI8      */

                    INT *         pintVal;      /* VT_BYREF|VT_INT      */

                    UINT *        puintVal;     /* VT_BYREF|VT_UINT     */

                    struct __tagBRECORD {

                        PVOID         pvRecord;

                        IRecordInfo * pRecInfo;

                    } __VARIANT_NAME_4;         /* VT_RECORD            */

                } __VARIANT_NAME_3;

            } __VARIANT_NAME_2;

            DECIMAL decVal;

        } __VARIANT_NAME_1;

    };

    3、 Float型转化为VARIANT

    //float型转化为VARIANT

    VARIANT va1;

    float a1=m_Fre1_AD9852;

    va1.vt=VT_R4;///指明float数据,VT_I4是整型,VT_R8double

    //va1.lVal=a1; 

    va1.fltVal=a1; //指明fltVal是float型赋值,intVal是整型,dblVal是double

    m_Fre1_wknob.SetValue(va1);

    4、 VARIANT型转化为double型

    VARIANT var;

    var=m_Power_wknob.GetValue();//获取值

    value_power=var.dblVal; ///指明fltVal是float型赋值,intVal是整型,dblVal是double

    AMP_dBm_Reg=value_power;//赋值给double型

    展开全文
  • VARIANT variant_inp; COleSafeArray safearray_inp; variant_inp=m_CMscomm.get_Input(); safearray_inp=variant_inp; //转换后发现程序崩溃 , 在初始化的时候加入 m_ctrlComm.SetInputMode(1); ...

     

     

    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    variant_inp=m_CMscomm.get_Input();
    safearray_inp=variant_inp; //转换后发现程序崩溃 ,

    在初始化的时候加入

    m_ctrlComm.SetInputMode(1);

     

    展开全文
  • 在VC中如何使用VARIANT型变量

    千次阅读 2009-01-04 15:32:00
    在VC中如何使用VARIANT型变量 VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH...

    在VC中如何使用VARIANT型变量

     

        VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH接口调用特定的METHOD或属性时用,VB和VC已经将这一过程透明。(主持人注:换句话说,VC会自动转换简单数据类型。)
        关于下面的几个METHOD,例如OPENURL,在VB中原形是object.OpenUrl(url [,datatype] url是有效的URL字符串, DATATYPE是整形,返回指定URL的文档。在MFC中是CInternetSession::OpenURL

    1.     VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH接口调用特定的METHOD或属性时用,VB和VC已经将这一过程透明。(主持人注:换句话说,VC会自动转换简单数据类型。) 
    2.     关于下面的几个METHOD,例如OPENURL,在VB中原形是object.OpenUrl(url [,datatype] url是有效的URL字符串, DATATYPE是整形,返回指定URL的文档。在MFC中是CInternetSession::OpenURL 
    3.     CStdioFile* OpenURL( LPCTSTR pstrURL, DWORD dwContext = 1, DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, LPCTSTR pstrHeaders = NULL, DWORD dwHeadersLength = 0 ); 
    4.     Throw ( CInternetException ); 
    5.     VARIANT的定义如下: 
    6.     typedef struct FARSTRUCT tagVARIANT VARIANT; 
    7.     typedef struct FARSTRUCT tagVARIANT VARIANTARG; 
    8.      
    9.     typedef struct tagVARIANT { 
    10.      VARTYPE vt; 
    11.      unsigned short wReserved1; 
    12.      unsigned short wReserved2; 
    13.      unsigned short wReserved3; 
    14.      union { 
    15.      unsigned char bVal; // VT_UI1. 
    16.      short iVal; // VT_I2 . 
    17.      long lVal; // VT_I4 . 
    18.      float fltVal; // VT_R4 . 
    19.      double dblVal; // VT_R8 . 
    20.      VARIANT_BOOL boolVal; // VT_BOOL. 
    21.      SCODE scode; // VT_ERROR. 
    22.      CY cyVal; // VT_CY . 
    23.      DATE date; // VT_DATE. 
    24.      BSTR bstrVal; // VT_BSTR. 
    25.      IUnknown FAR* punkVal; // VT_UNKNOWN. 
    26.      IDispatch FAR* pdispVal; // VT_DISPATCH. 
    27.      SAFEARRAY FAR* parray; // VT_ARRAY|*. 
    28.      unsigned char FAR* pbVal; // VT_BYREF|VT_UI1. 
    29.      short FAR* piVal; // VT_BYREF|VT_I2. 
    30.      long FAR* plVal; // VT_BYREF|VT_I4. 
    31.      float FAR* pfltVal; // VT_BYREF|VT_R4. 
    32.      double FAR* pdblVal; // VT_BYREF|VT_R8. 
    33.      VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL. 
    34.      SCODE FAR* pscode; // VT_BYREF|VT_ERROR. 
    35.      CY FAR* pcyVal; // VT_BYREF|VT_CY. 
    36.      DATE FAR* pdate; // VT_BYREF|VT_DATE. 
    37.      BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR. 
    38.      IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN. 
    39.      IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH. 
    40.      SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*. 
    41.      VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT. 
    42.      void FAR* byref; // Generic ByRef. 
    43.      }; 
    44.     }; 
    展开全文
  • //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 } 问题:在len=safearray_inp.GetOneDimSize(); 赋值的时候,老是提示错误,请大虾指导
  • CString C****::Format(_variant_t var) { DATE dt; COleDateTime da; CString strValue; switch (var.vt) { case VT_BSTR://字符串 case VT_L
    CString C****::Format(_variant_t var)   
    {   
        DATE dt;   
        COleDateTime da;   
        CString strValue;   
           
        switch (var.vt)   
        {   
        case VT_BSTR://字符串    
        case VT_LPSTR://字符串    
        case VT_LPWSTR://字符串    
            strValue = (LPCTSTR)(_bstr_t)var;   
            break;   
        case VT_I2://短整型    
            strValue.Format("%d", var.iVal);   
            break;   
        case VT_UI2://无符号短整型    
            strValue.Format("%d", var.uiVal);   
            break;   
        case VT_VOID://    
        case VT_INT://整型    
        case VT_I4://整型    
            strValue.Format("%d", var.intVal);   
            break;   
        case VT_I8://长整型    
            strValue.Format("%d", var.lVal);   
            break;   
        case VT_UINT://无符号整型    
        case VT_UI4://无符号整型    
            strValue.Format("%d", var.uintVal);   
            break;   
        case VT_UI8://无符号长整型    
            strValue.Format("%d", var.ulVal);   
            break;   
        case VT_R4://浮点型    
            strValue.Format("%.4f", var.fltVal);   
            break;   
        case VT_R8://双精度型    
            strValue.Format("%.8f", var.dblVal);   
            break;   
        case VT_DECIMAL: //小数    
            strValue.Format("%.4f", var.decVal);   
            break;   
        case VT_BOOL://布尔型    
            strValue = var.lVal ? "TRUE" : "FALSE";   
            break;   
        case VT_DATE: //日期型    
            dt = var.date;   
            da = COleDateTime(dt);    
            strValue = da.Format("%Y-%m-%d %H:%M:%S");   
            break;   
        case VT_NULL://NULL值    
            strValue = "NULL";   
            break;   
        case VT_EMPTY://空    
            strValue = "";   
            break;   
        case VT_UNKNOWN://未知类型    
        default:   
            strValue = "UN_KNOW";   
            break;   
        }   
        return strValue;   
    }   
    

    展开全文
  • C++DLL接口是Variant型。 VB6定义缺省变量可以正常传入,VB2012就会报错。 Object到底还算不算Variant类型? VB2012到底传入一个什么类型,可以让C++Variant类型参数正常接收,不报类型不一致错误?
  • 如何判断变量的类型

    千次阅读 2016-10-01 10:30:16
    在delphi 中如何判断一个variant型变量的类型 引用系统单元 system.Variants.pas 此单元中已有封装好的一些常见变量的判断函数: VarIsStr; VarIsNumeric VarIsFloat VarIsOrdinal
  • /*将 _variant_t 类型的变量,转换成字符串(比如如果是数字,则转换成数字对应的字符串 :如 10.2 -> "10.200000")*/_variant_t var; CString str; //转换以后的字符串//以下代码演示如何转换为C标准字符串if ...
  • 要搞清楚这个问题首先要明白什么VARIANT类型,这样就很容易的知道如何从一个long数组构建一个VARIANT结构。 什么是VARIANT类型: 实际上VARIANT也只不过是一个新定义的结构罢了,它的主要成员包括一个联合体及一...
  • Variant是一种特殊的数据类型,该类型是没有类型声明字符,作用是能够在运行期间动态的改变类型,并且支持所有简单的数据类型,如整型、浮点、字符串、布尔、日期时间、货币及OLE自动化对象等。Variant 适应性可以...
  • MSComm Error

    2012-05-19 13:39:10
    (m_MsComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符  {  variant_inp=m_MsComm.GetInput();...//VARIANT型变量转换为ColeSafeArray型变量  }  问题:在safearray_inp=variant_in
  • VB中 variant与object区别?

    千次阅读 2016-11-13 16:11:35
    Variant是不定类型,或者说可变类型,是一种“万金油”变量,你给它赋值哪种类型的数据,它就会自动变为哪种类型,比如说赋值1234,它就是Integer,赋值12.34,它就是Double。 Object是对象,是VB中各种控件、...
  • VC++ COleSafeArray VARIANT的使用

    千次阅读 2012-11-03 14:58:32
    SAFEARRAY  SAFEARRAY的主要目的是用于automation中的数组参数的传递。因为在网络环境中,数组是不能...SafeArray也并不单独使用,而是将其再包装到VARIANT类型的变量中,然后才作为参数传送出去。在VARIANT的vt
  • 给数组赋初值

    千次阅读 2005-12-19 00:36:00
    首先定义一个variant型的变量,然后使用Array(参数)将数组的各值赋给定义的Variant型变量,如下:Dim varTemp as VariantvarTemp = Array(1,2,3,4,5)然后就可以使用数据类型转换函数分别将数组转换为指定类型Cdbl...
  • VB编程中的一些经验 (转)[@more@]VB编程中的一些经验 1. 假设VB中有如下的变量声明:dim s1, s2 as string则s1是一个variant型变量,而s2是一个string型变量如果想要声明两个st...
  • 古怪的VARIANT_BOOL类型

    千次阅读 2012-11-14 14:06:39
    在进行MFC的ActiveX控件编程时,肯定会遇到布尔...1.在控件的DoPropExchange(CPropExchange*pPX)中需要调用PX_Bool函数,但是这个函数要求第3个参数为int,可向导生成的变量就是VARIANT_BOOL的,所以这里是需要进
  • 学生总结(三)variant与mrc.bookmark

    热门讨论 2017-08-27 21:37:25
    1、Variant的说明及应用 在代码中有一句Dim ... As Variantvariant是可变型变量。意思就是可以自动变化,如:  dim varA as variant  varA="OK" ' 变成了字符串  varA=15 ’变成了整形 可以任意的改变
  • vb变量定义方法

    千次阅读 2014-07-02 10:30:07
    dim a,b as Integer a 为variant b 为 integer dim a as Integer ,b as Integer ... Dim b As String -说明b为可变长字符型变量  Dim c As String~~1 0 ’说明c为长度是10个字符的固定长字符型
  • //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k;k++) //将数组...
  • //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); //得到有效数据长度 for(k=0;k;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k;k++) //将数组转换...
  • [Excel VBA]如何拷贝数组?

    千次阅读 2016-02-06 13:11:16
    Variant型变量 = 数组 数组是可以保存多个值的 “一种变量”。变量是独幢楼房的话,数组就是联排别墅。VBA中在数组名后面加上括号,里面指定数组元素的编号。要注意编号是从0开始。 数组拷贝到別的数组时,不是...
  • //VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); for(k=0;k;k++) { safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 } for(k=0;k;k++)//将数组转换为...
  • 本部分主要介绍Excel VBA编程过程中的一些可以提高代码运行速度的使用技巧,我们知道,用VBA实现同一个功能可能有多种不同的方法,但我们...技巧一:将变量声明成合适的数据类型,并且尽量不声明Variant型变量通过Ex...
  • 通过.Input可以获得一个字节的数据(8bit),可以定义一个Variant型变量读取.Input的值。方式如下: ‘定义变量 Dim Data_rx As Variant ‘用于中间存储 Dim RX_data(1) As Byte ‘用于最终存储和处理 ,...
  • //VARIANT型变量转换为ColeSafeArray型变量 len = safearray_inp.GetOneDimSize();//得到有效数据长度 for(k = 0;k ;k++) { safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 } for(k ...
  • VB编程中的一些经验

    2002-03-22 17:37:00
    假设VB中有如下的变量声明: dim s1, s2 as string则s1是一个variant型变量,而s2是一个string型变量如果想要声明两个string变量s1和s2应该用: dim s1 as string, s2 as string2. VB中的对象是自动回收的,类似...
  • ex5.用中间变量交换文本 Option Explicit Private Sub Command1_Click() ...VB中所有的变量都有变量名和数据类型,在声明变量时如果未指定数据类型,则变量默认被声明为Variant 数据类型。函数Typ
  • //VARIANT型变量转换为//ColeSafeArray型变量 len=safearray_inp.GetOneDimSize();//得到有效数据长度 for(k=0;k;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k;k++)...
  • //VARIANT型变量转换为//ColeSafeArray型变量 len=safearray_inp.GetOneDimSize();//得到有效数据长度 for(k=0;k;k++) safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组 for(k=0;k;k++) //将...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 126
精华内容 50
热门标签
关键字:

variant型变量