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

    千次阅读 2008-07-27 16:54:00
    1. 直接使用VARIANT变量a. 定义VARIANT变量可以直接定义VARIANT类型的变量。 VARIANT val; b. 初始化VARIANT变量在使用VARIANT变量之前,一定要初始化。 VariantInit(&val); c. 设置变量值设置变量值前如果...

     1.  直接使用VARIANT变量
    a.   定义VARIANT变量
    可以直接定义VARIANT类型的变量。

     

    VARIANT val;

     

    b.   初始化VARIANT变量
    在使用VARIANT变量之前,一定要初始化。

     

    VariantInit(&val);

     

    c.   设置变量值
    设置变量值前如果VARIANT变量中已经有值,先要清除原有数据。

     

    VariantClear(&val);

    val.vt = VT_I4;   // 设置类型

    val.lVal = 10;    // 设置变量值

     

    d.   清除VARIANT变量
    在使用完VARIANT变量后,要清除变量,否则会发生内存泄漏。

     

    VariantClear(&val);

     

    e.   动态分配VARIANT变量
    如果要动态分配VARIANT变量,应该使用标准的COM内存管理函数。

    标准COM内存管理函数包括CoTaskMemAlloc、CoTaskMemFree和CoTaskMemRealloc。

     

    VARIANT * pVal;

    pVal = (VARIANT *)CoTaskMemAlloc(size_of(VARIANT));

    VariantInit(pVal);

    pVal->vt = VT_I4;

    pVal->lVal = 10;

    ...

    VariantClear(pVal);

    CoTaskMemFree(pVal);

     

    2.  通过CComVariant使用VARIANT变量
    CComVariant是ATL对于VARIANT的简单包装。通过CComVariant可以更简单的使用VARIANT,而不必担心没有进行初始化或清除。如果没有特殊情况,应该尽量使用CComVariant而不要使用VARIANT。

    以下是使用CComVariant的代码实例。

     

    CComVariant Val;

    Val.vt = VT_I4;

    Val.lVal = 10;

    // Val 不必清除

     

    以下是使用CComVariant数组的例子。

     

    CComVariant * pVal;

    pVal = new CComVariant[10];

    for (int i = 0; i < 10; ++i)

    {

        pVal[i].vt = VT_I4;

        pVal[I].lVal = i + 1;

    }

    ...

    delete[] pVal;

    展开全文
  • VARIANT 变量

    2009-09-14 14:15:00
    在Windows内部,字体是以一个名为LOGFONT的结构来表示的。结构LOGFONT的定义如下:typedef struct tagLOGFONT{ LONG lfHeight;LONG lfWidth;LONG lfEscapement;LONG lfOrientation;LONG lfWeight;...

    Windows内部,字体是以一个名为LOGFONT的结构来表示的。

    结构LOGFONT的定义如下:

    typedef struct tagLOGFONT

    LONG lfHeight;

    LONG lfWidth;

    LONG lfEscapement;

    LONG lfOrientation;

    LONG lfWeight;

    BYTE lfItalic;

    BYTE lfUnderline;

    BYTE lfStrikeOut;

    BYTE lfCharSet;

    BYTE lfOutPrecision;

    BYTE lfClipPrecision;

    BYTE lfQuality;

    BYTE lfPitchAndFamily;

    TCHAR lfFaceName[LF_FACESIZE];

    } LOGFONT;

    各成员的含义如下:

    参数

    描述

    lfHeight

    以逻辑单位指定字体字符元(character cell)或字符的高度。字符高度值为字符元高度值减去内部行距(internal-leading)值。当lfHeight大于0时,字体映射程序将该值转换为设备单位,并将它与可用字体的字符元高度进行匹配;当该参数为0时,字体映射程度将使用一个匹配的默认高度值;如果参数的值小于0,则将其转换为设备单位,并将其绝对值与可用字体的字符高度进行匹配。对于任何一种情况,字体映射程度最终得到的字体高度值不会超过所指定的值。以MM_TEXT映射模式下,字体高度值和磅值有如下的换算公式:lfHeight=-MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

    lfWidth

    以逻辑单位指定字体字符的平均宽度。如果lfWidth的值为0,则根据设备的纵横比从可用字体的数字转换纵横中选取最接近的匹配值,该值通过比较两者之间的差异的绝对值得出。

    lfEscapement

    以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。

    ifOrientation

    以十分之一度为单位指定字符基线相对于页面底端的角度。

    lfWeight

    指定字体重量。在Windows中,字体重量这个术语用来指代字体的粗细程度。lfWeight的范围为01000,正常情况下的字体重量为400,粗体为700。如果lfWeight0,则使用默认的字体重量。

    lfItalic

    lfItalicTRUE时使用斜体

    lfUnderline

    lfUnderlineTRUE时给字体添加下划线

    lfStrikeOut

    lfStrikeOutTRUE时给字体添加删除线

    lfCharSet

    指定字符集。可以使用下面的预定义值:ANSI_CHARSETOEM_CHARSETSYMBOL_CHARSETUNICODE_CHARSET其中OEM字符集是与操作系统相关的。

    lfOutPrecision

    指定输出精度。输出精度定义了输出与所要求的字体高度、宽度、字符方向等的接近程度。它可以为下面的值之一:OUT_CHARACTER_PRECISOUT_DEFAULT_PRECISOUT_STRING_PRECISOUT_STROKE_PRECIS

    lfClipPrecision

    指定剪辑精度。剪辑精度定义了当字符的一部分超过剪辑区域时对字符的剪辑方式,它可以为下列值之一:CLIP_CHARACTER_PRECISCLIP_DEFAULT_PRECISCLIP_STROKE_PRECIS

    lfQuality

    定义输出质量。输出质量定义了图形设备接口在匹配逻辑字体属性到实际的物理字体的所使用的方式,它可以为下列值之一:DEFAULT_QUALITY (默认质量)DRAFT_QUALITY (草稿质量)PROOF_QUALITY (正稿质量)

    lfPitchAndFamily

    指定字体的字符间距和族。最低两位指定字体的字符间距为以下值之一:DEFAULT_PITCHFIXED_PITCHVARIABLE_PITCH47位指定字体族为以下值之一:FF_DECORATIVEFF_DONTCAREFF_MODERNFF_ROMANFF_SCRIPTFF_SWISS这些值的具体含义可以参考Visual C++中关于结构LOGFONT的文档。字符间距和字体族可以使用逻辑或(OR)运算符来进行组合。 lfFaceName:一个指定以NULL结尾的字符串的指针,它指定的所用的字体名。该字符串的长度不得超过32个字符,如果lfFaceNameNULL,图形设备接口将使用默认的字体名。

     

    展开全文
  • 还有许多操作variant 变量的函数,你可以用它们进行特定的类型转换,或通过它们获取variant变量的类型信息(例如VarType 函数),当你用variant变量写表达式时,Delphi会自动调用这些类型转换和赋值函数。...
  • 利用Variant变量用DELPHI操作EXCEL.zip
  • 【06】variant 变量

    2011-09-28 23:52:00
    【01】variant 变量可以存储任何数据类型。一旦得到一个 variant 值,你可以把它拷贝给任何兼容或不兼容的数据类型。 如果你把值赋给不兼容的数据类型,Delphi 会力尽所能进行转换,无法转换则颁布一个运行时间错误...

    【01】variant 变量可以存储任何数据类型。一旦得到一个 variant 值,你可以把它拷贝给任何兼容或不兼容的数据类型。
          如果你把值赋给不兼容的数据类型,Delphi 会力尽所能进行转换,无法转换则颁布一个运行时间错误。
          var
            v: variant;
          v := 10;
          v := 'Hello, World';
          v := 45.55;

    转载于:https://www.cnblogs.com/luoxuetingchen/archive/2011/09/28/2194937.html

    展开全文
  • 我发现在vbs中传入的VARIANT参数是VT_ARRAY | VT_VARIANT,但是执行到COM接口实现函数中时,就变成了VT_BYREF|VT_VARIANT,请问是什么原因? 具体情况如下: <p>COM接口定义:...
  • 在VC中如何使用VARIANT变量

    千次阅读 2009-12-13 15:34:00
    用MapX写程序时,有些方法的输入参数和...在vc中主要用COleVariant对象定义variant变量,以下面的例子为说明:例如:要取得pdataset中某一行某一列的属性值,pfeature,pfield分别表示行和列,要读取某一个值,该值为Str

    用MapX写程序时,有些方法的输入参数和返回值都是VARIANT类型,在VB中用dim pv as variant就可以了,而在Vc中稍微麻烦一点,不过稍微尝试一二,就会发现不过如此了。在vc中主要用COleVariant对象定义variant变量,以下面的例子为说明:

    例如:要取得pdataset中某一行某一列的属性值,pfeature,pfield分别表示行和列,要读取某一个值,该值为String类型变量。

             COleVariant vRow;

             COleVariant vCol;

             COleVariant vVal;

     

             vRow.vt = VT_DISPATCH;

             vRow.pdispVal = pfeature.m_lpDispatch;

             vRow.pdispVal->AddRef();

     

             vCol.vt = VT_DISPATCH;

             vCol.pdispVal = pfield.m_lpDispatch;

             vCol.pdispVal->AddRef();

     

             vVal = pdataset.GetValue(vRow, vCol);//COleVariant(7L));

     

             vVal.ChangeType(VT_BSTR);

            

             m_strfeaturevalue = vVal.bstrVal;

             m_edtfeaturevalue.SetWindowText(m_strfeaturevalue);

    展开全文
  • 工作经验总结之_VARIANT变量用法

    千次阅读 2008-11-15 14:04:00
    工作经验总结之_VARIANT变量用法 typedef struct tagCY{结构体原型typedef struct tagVARIANT { VARTYPE vt;//enum类型 unsigned short wReserved1//保留字段; unsigned short wReserved2; unsigned short ...
  • 火眼识破隐藏的Variant变量 如果没有用As语句声明变量,默认类型就是Variants,比如: Dim name ' this is a variant 或者,当前模块下没有声明Option Explicit语句...
  • C++Builder中的Variant变量

    千次阅读 2014-11-22 14:31:03
    Variant arr = VarArrayCreate (OPENARRAY (int, (0,3)), varVariant); char *p="how are you!"; if (arr. IsArray ()) { arr. PutElement (12, 0); arr. PutElement ("hello", 1);
  • Activex 使用VARIANT变量

    千次阅读 2009-11-30 14:56:00
     通过VARIANT,VT_RECORD,IRecordInfo的这种方法可以用自动化来传递自定义类型数据,但实际上这种方法只适用于双接口的情况。其原因在于实现组件IDispatch 接口的IDispatchImpl类身上,它是通过VTable来调用方法的。...
  • 判断判断Variant变量是否为空

    千次阅读 2013-10-14 11:35:12
    _variant_t bh; if(bh.vt==VT_EMPTY||bh.vt==VT_NULL)
  • VARIANT size,out; Variantint(&size); Variantint(&out); ........ 后面要显示结果数据时,[color=#FF0000]strtext.Format(%.f”,(XXX+i*m_size+j));[/color] 要实现out值与(i*m_size+j)相加,...
  • 在把公司一些通用的东西写成sdk的过程中,看到公司以前工程师写成通过GetPrivateProfileString读取ini文件中的value,放到...我了解的是在使用variant类型的变量时,是需要指定它的类型才可以使用的。到底是怎么回事?
  • Variant变体类型的可以理解为:还不知道它是什么类型,将来它会自动变成我想要的类型。即“可变体”。
  • var? st:?? TStringStream;... v:variant;begin??? ft:=Tfilestream.Create('C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Blue hills.jpg',fmOpenRead );??? st?? :=?? tst...
  • FunWo,tbWo: Variant; FunWo := SAPFunctions1.Add('ZPP_FM_WO_MAINTAIN'); tbWo := FunWo.tables.item('I_SCHIMP'); 想清除tbwo内存,请高手帮忙。在百度中查找到的c的清除方法。
  • CString str1(_T("111")),str2(_T("222"));... VARIANT vt; vt.vt = VT_BSTR; vt.bstrVal = _bstr_t(str1); BSTR bstrTemp = _bstr_t(str2); 为什么执行到最后一句的时候vt的值被str2取代了? 求高手解释
  • 不知道为什么SQL2005就是不能使用GetChunk到一个字节组,但是可以读取到Variant变量,我用StrPtr可以取得其内存的地址,用CopyMemory读取数据完全没有问题,但是写数据就不行了。 Dim mg(7) As Long, lm As Long,...
  • 如题!
  • VS2013 VT_LPSTR和VT_LPWSTR声明还在但是在VARIANT中对应的pszVal和pwszVal没有了? 在VT_LPSTR和VT_LPWSTR上右键转到声明能跳过去,但是VARIANT类型的变量敲不出pszVal和pwszVal了
  • VC写的OCX,其中一个接口的参数为指针类型,为了供多种语言调用,OCX中将其定义成了VARIANT&类型。 C#调用这个OCX,传递了一个非托管内存的指针 经过测试,OCX接收到这个参数之后,VARIANT&参数的vt的值...
  • VARIANT变量转换

    千次阅读 2013-11-05 22:26:23
     我们怎么把一个整形或double型等其它的类型赋值给VARIANT变量呢,或者是VARIANT变量怎么赋值给int等其它类型呢。 2、 VARIANT是一个结构体,它的结构体如下: struct tagVARIANT {  union {  
  • VARIANT variant_inp; COleSafeArray safearray_inp; variant_inp=m_CMscomm.get_Input(); safearray_inp=variant_inp; //转换后发现程序崩溃 , 在初始化的时候加入 m_ctrlComm.SetInputMode(1); ...
  • VARIANT*变量如何赋值

    2013-01-12 15:59:46
    一个函数的蚕食类型是 VARIANT*的,像赋值字符串类型的数据 请问如何做 如果把wchar_t*赋值给VARIANT* 如何转换呢
  • VARIANT 语法

    2019-08-28 10:54:03
    它包含了一个类型成员VT,用于表示该VARIANT变量是什么类型,在一个大的UNION类型中表示该VARIANT变量的值,同时还有一些保留字节没有使用,首先要判断该变量的数据类型,然后再UNION类型中读取对应的值。...
  • 在VC中如何使用VARIANT变量

    千次阅读 2009-01-04 15:32:00
    在VC中如何使用VARIANT变量 VIRIANT是ACTIVEX AUTOMATION需要用到的一种变量类型,可以称之为通用数据类型,其实它是一个结构。如果仅仅是调用ACTIVEX对象所提供的METHOD不需知道其中的细节。它仅用于通过IDISPATCH...
  • Prefab Variant 预制体变量 在创建 Prefab 时,会遇到下列窗口提示 Original Prefab 即建立新的原生预制体 如果需要在之前的 Prefab 上进行修改,例如给某个关卡的人物加上帽子等,可以使用预制体变量 Prefab ...
  • VARIANT GetResultNamesDuringMeas() { VARIANT result; InvokeHelper(0x1, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL); return result; } 在MFC中调用如下 VARIANT var = pITestbed....
  • Variant类型

    2012-02-06 12:58:00
    Variant类型 为了完全支持OLE,32位Delphi 增加了Variant 数据类型,本节将从宏观角度来分析这种数据类型。...Variant变量没有类型 一般说来,你可以用Variant 变量存储任何数据类型,对它执...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,025
精华内容 410
关键字:

variant变量