tagVARIANT是一个结构体struct:  C++ Code: tagVARIANT 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263   struct  tagVARIANT     {     union          {         struct  __tagVARIANT          …
参考文章 http://blog.163.com/wslngcjsdxdr@126/blog/static/16219623020107634935586/ http://blog.csdn.net/dreamcs/article/details/7186633 http://blog.sina.com.cn/s/blog_6c3d32da0100ua13.html COleVariant是数据库常用到的数据类型.它可以是字串,整型值,日期等.知道怎样将它转换为CString很有用处. 设有CS…
COleVariant 本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. 例子 COleVariant var(3.6f); float v = var.fltVal; CString str("testCOleVariant"); COleVariant var2(str); CString cpStr(var2.bstrVal); 例子 CString CMFCPropertyGridProperty::m_strFormatChar = _T(…
一:为什么会有这个? 目前,计算机语言有很多(大哥,为什么不能就那么一样呢?),如C++.Java,此外还有JavaScript.VBScript等脚本语言,它们自立门派,各自维护自己的数据类型. C++是一种强类型语言,即C++中的某个变量,在使用时类型已经确定,C++中的变量都会被翻译成准确的内存地址和大小,如果类型不确定是不可能处理的.当使用C++这样强类型的语言来读取数据库或者与其他语言之间来交换数据时,它很有可能不知道获取到的数据的具体类型,这个时候必须借助于变体类型读取数据.VARI…
变体类型 Variant VARIANT class RTL_DELPHIRETURN Variant: public TVarData typedef struct    tagVARIANT  VARIANT; Variant Arrays V: Variant; V := VarArrayCreate([0,9], varInteger);  CreateOleObject("ss.comds"); OleFunction…
VARIANT数据结构包含两个域(如果不考虑保留的域).vt域描述了第二个域的数据类型.为了使多种类型能够在第二个域中出现,我们定义了一个联合结构.所以,第二个域的名称随着vt域中输入值的不同而改变.用于指定vt域值情况的常量在联合的定义中以每一行的注释形式给出.  C++ Code  1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575…
VARIANT and VARIANTARG Use VARIANTARG to describe arguments passed within DISPPARAMS, and VARIANT to specify variant data that cannot be passed by reference. When a variant refers to another variant by using the VT_VARIANT | VT_BYREF vartype, the var…
一.CString, int, string, char*之间的转换 string 转 CString CString.Format("%s", string.c_str());char 转 CString  CString.Format("%s", char*);char 转 string  string s(char *);string 转 char *  char *p = string.c_str();CString 转 string  string s(C…
我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="赵三"; char temp[200]; char *buf; CString str; _variant_t v1; _bstr_t v2; 一.其它数据类型转换为字符串 短整型(int) itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制 itoa…
要在Unicode字符集环境下把CString转化为char* 方法: CString str = _T("D://校内项目//QQ.bmp");//////leo这个NB  可以降在Unicode下的CString转化为char*    //声明标识符    USES_CONVERSION;    //调用函数,T2A和W2A均支持ATL和MFC中的字符转换    char * pFileName = T2A(str);      //char * pFileName = W2A(s…
原文地址:https://www.cnblogs.com/yincheng01/archive/2008/12/31/2213386.html 一.              VC常用数据类型列表 二.              常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 ●CString,string,char*的综合比较 ●数学类型与CString相互转化 ●CString与char*相互转换举例 ●CS…
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 ●CString,string,char*的综合比较 ●数学类型与CString相互转化 ●CString与char*相互转换举例 ●CString 与 BSTR 型转换 ●VARIANT…
原文:http://www.cnblogs.com/GT_Andy/archive/2011/01/18/1938605.html 一.定义 1.CString:动态的TCHAR数组.它是一个完全独立的类,封装了+等操作符和字符串操作方法. 2.BSTR:专有格式的字符串(需要使用系统函数来操纵).定义为:typedef OLECHAR FAR* BSTR 3.LPCTSTR:常量的TCHAR指针.定义为:typedef const char* LPCTSTR 二.要点 1.char*:指向AN…
CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针. CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法. typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每…
 关于字符集不一的历史原因,可以参考: UNICODE与ANSI的区别 以下是网上转载的资料.我将辅以自己的实例,说明并总结关系. 一.CString, int, string, char*之间的转换(无法区分这几个类型的把这节跳过,最后回来复习) string 转 CString  CString.Format("%s", string.c_str());char 转 CString  CString.Format("%s", char*);char 转 stri…
下面这些是和Win32程序共同使用的数据类型BOOL:布尔值,取值为TRUE or FALSEBSTR:32-bit 字符指针BYTE:8-bit整数,未带正负号COLORREF:32-bit数值,代表一个颜色值DWORD:32-bit整数,未带正负号LONG:32-bit整数,带正负号LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数LPCSTR:32-bit指针,指向一个常数字符串LPSTR:32-bit指针,指向一个字符串LPCTSTR:32-bit指针,指向一个…
vc字符串转换处理:(绝对精华,收集所有的例子) 1.头文件中要定义宏;   #define   UNICODE         #define   _UNICODE     //////////////////// char   buf[128];    memset(buf,0,128);     strcpy(buf,"你好");     WCHAR   pCName[128];     memset(pCName,0,128);     MultiByteToWideChar(…
vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常 量的TCHAR指针. CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法.typedef OLECHAR FAR* B…
上一次说到,COM为了跨语言,有一套完整的规则,只要COM组件按照规则编写,而不同的语言也按照对应的规则调用,那么就可以实现不同语言间相互调用.但是根据那套规则,只能识别接口,并调用没有参数和返回类型的接口,毕竟不同语言里面的基本数据类型不同,可能在VC++中char * 就表示字符串,而在Java或者c#中string是一个对象,二者的内存结构不同,不能简单的进行内存数据类型的强制转化.为了实现数据的正常交互,COM中又定义了一组公共的数据类型. HRESULT类型: 在COM中接口的返回值强…
VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义.struct  tagVARIANT    {    union         {        struct  __tagVARIANT            {            VARTYPE vt;            WORD wReserved1;            WORD wReserved2;            WORD wReserved3;   …
The Variant data type is the data type for all variables. can contain any kind of data except fixed-length String data. You can use the Variant data type in place of any data type to work with data in a more flexible way. If the contents of a Variant…
转自:http://kuaixingdong.blog.hexun.com/29627840_d.html 我们先看看COM所支持的一些类型的基本类: (微软提供,在comdef.h中定义) 在COM中使用的标准类Class如下所示: _bstr_t:对BSTR类型进行打包,并提供有用的操作和方法: _com_error:定义抛出的error对象: _com_ptr_t:封装COM接口指针 _variant_t:对VARIANT类型进行打包,并提供有用的操作和方法: 一._variant_t类的…
一.VARIANT.CComVariant类与CString是什么: CString是MFC定义的字符串类,VARIANT是COM标准为了使COM组件能够被各种语言使用(vc++.vb.java.python等)而规定的一种统一型变量.即VARIANT能够转化成载体语言规定的变量类型,载体语言的变量类型也可以转化成VARIANT类型. CComVariant类对VARIANT进行了类封装,并提供了操作方法.实际保存数据的仍然是CComVariant类封装的VARIANT变量. 由于VARIANT…
用户自定义结构数据与VARIANT转换 cheungmine 将用户自定义的C结构数据存储成VARIANT类型,需要时再将VARIANT类型转为用户自定义的结构数据,有十分现实的意义,既然我们不想为这样的结构数据写一个COM包装类.虽然有很多方法和手段生成这样的VARIANT,但是,多数时候可能需要一个更加简单的,灵活的方法.我在做远程过程调用的C接口时,忽然联想到,既然RPC可以把任何数据以字节的形式发送,那么,就可以利用这个机制,把结构打包成字节数组.而字节数据是可以很方便地存储在VARIA…
我第一次用VARIANT和CComVariant的时候全然不明确它是怎么回事,为它什么数据类型都能够存放.什么数据都能够被能够初始化?里面究竟是怎么实现的?感觉又奇妙又迷惑!我们在上一节中讲了union的使用方法之后你或许想到了大概是怎么回事了.没错.union能够帮我们实现这一个奇妙的功能.并且VARIANT定义中确实使用了union.假设你还不明确,那我们就自己来模拟实现一个相似于CComVariant功能的类把,废话不多说,看代码: CVariate.h: #ifndef CVARIATE…
在xml操作中经常会用到在某一个节点后或前面插入一个节点,MSXML DOM 中使用的函数是insertBefore(IXMLDOMNode *newChild, VARIANT refChild):第二个参数只的是参考节点的内存地址传参需要用到 _variant_t 的 IDispatch构造方法,代码如下 #import "msxml3.dll" rename_namespace("MSXML") void InsertDemo() { CComPtr<M…
_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型, VARIANT和BSTR这两种类型是COM中使用的数据类型. 实现_variant_t向int,String ,double,long,byte等类型转换 为了C++中的变量应用到ADO编程中,只能进行数据类型的转换.通过_variant_t和_bstr_t这两个类,就可 _variant_t var; var=m_pRecordset->GetCollect ("UserName"…
class RTL_DELPHIRETURN Variant: public TVarData Variant转换为字符串 System::Variants::VarToStr VariantArrays, VarArrayCreate void __fastcall TForm1::Button1Click(TObject *Sender) { Variant array; ] = {, }; /* Create a variant array of 10 elements, starting…
我们先看看COM所支持的一些类型的基本类: (微软提供,在comdef.h中定义) 在COM中使用的标准类Class如下所示: _bstr_t:对BSTR类型进行打包,并提供有用的操作和方法: _com_error:定义抛出的error对象: _com_ptr_t:封装COM接口指针 _variant_t:对VARIANT类型进行打包,并提供有用的操作和方法: 一._variant_t类的简单介绍: _variant_t对象封装了VARIANT数据类型. The class manages re…
COleVariant本质上是一个枚举,用同一种类型来表达不同的子类型.如同boost中的variant. COLeVariant类是对VARIANT结构的封装. VARIANT结构包含两部分.其一是VARIANT型的成员变量vt:其二是个联合类型,这个联合包含了VC常用的几乎所有类型.因为联合用的是相同的存储空间,因此对联合的内容的解释依赖于vt. 例如: 若vt的值是VT_UI2,说明该联合被解释为short int.并使用成员变量名iVal. 若vt的值是VT_BSTR,说明该联合被解释为…