tempad
Readygo技术搜索引擎 >>ASP技术 >> 有关简单的类型转换?

有关简单的类型转换?

Readygo技术搜索引擎 网络搜索 efish 2008-1-14 6:26:11

有关简单的类型转换?

楼主tagger()2002-05-14 15:01:53 在 VC/MFC / 基础类 提问

COleVariant   变量   to     CByteArray   变量的转换? 问题点数:10、回复次数:4Top

1 楼tagger()回复于 2002-05-14 15:39:44 得分 0

helpTop

2 楼tagger()回复于 2002-05-14 19:33:33 得分 0

无法转换吗?  
  Top

3 楼tagger()回复于 2002-05-15 07:35:42 得分 0

再upTop

4 楼qiuanhong(练从难处练,用从易处用)回复于 2002-05-15 08:11:30 得分 10

VARIANT   、_variant_t   与   COleVariant  
   
   
  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.    
  DATE   date;     //   VT_DATE.    
  BSTR   bstrVal;     //   VT_BSTR.    
  DECIMAL   FAR*   pdecVal     //   VT_BYREF|VT_DECIMAL.    
  IUnknown   FAR*   punkVal;     //   VT_UNKNOWN.    
  IDispatch   FAR*   pdispVal;     //   VT_DISPATCH.    
  SAFEARRAY   FAR*   parray;     //   VT_ARRAY|*.    
  Byte   FAR*   pbVal;     //   VT_BYREF|VT_UI1.    
  short   FAR*   piVal;     //   VT_BYREF|VT_I2.    
  long   FAR*   plVal;     //   VT_BYREF|VT_I4.    
  float   FAR*   pfltVal;     //   VT_BYREF|VT_R4.    
  double   FAR*   pdblVal;     //   VT_BYREF|VT_R8.    
  VARIANT_BOOL   FAR*   pboolVal;     //   VT_BYREF|VT_BOOL.    
  SCODE   FAR*   pscode;     //   VT_BYREF|VT_ERROR.    
  CY   FAR*   pcyVal;     //   VT_BYREF|VT_CY.    
  DATE   FAR*   pdate;     //   VT_BYREF|VT_DATE.    
  BSTR   FAR*   pbstrVal;     //   VT_BYREF|VT_BSTR.    
  IUnknown   FAR*   FAR*   ppunkVal;     //   VT_BYREF|VT_UNKNOWN.    
  IDispatch   FAR*   FAR*   ppdispVal;     //   VT_BYREF|VT_DISPATCH.    
  SAFEARRAY   FAR*   FAR*   pparray;     //   VT_ARRAY|*.    
  VARIANT   FAR*   pvarVal;     //   VT_BYREF|VT_VARIANT.    
  void   FAR*   byref;     //   Generic   ByRef.    
  char   cVal;     //   VT_I1.    
  unsigned   short   uiVal;     //   VT_UI2.    
  unsigned   long   ulVal;     //   VT_UI4.    
  int   intVal;     //   VT_INT.    
  unsigned   int   uintVal;     //   VT_UINT.    
  char   FAR   *   pcVal;     //   VT_BYREF|VT_I1.    
  unsigned   short   FAR   *   puiVal;     //   VT_BYREF|VT_UI2.    
  unsigned   long   FAR   *   pulVal;     //   VT_BYREF|VT_UI4.    
  int   FAR   *   pintVal;     //   VT_BYREF|VT_INT.    
  unsigned   int   FAR   *   puintVal;     //VT_BYREF|VT_UINT.    
   
   
  _variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。  
  使用时需加上#include   <comdef.h>  
  例如:  
  long   l=222;  
  ing   i=100;  
  _variant_t   lVal(l);  
  lVal   =   (long)i;  
   
   
  COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:  
  COleVariant   v3   =   "字符串",   v4   =   (long)1999;  
  CString   str   =(BSTR)v3.pbstrVal;  
  long   i   =   v4.lVal;  
   
  Top

责任编辑: efish 参与评论 查找更多:
相关文章
VC中的同步机制,欢迎参与讨论------来者有分! VC中的同步机制,欢迎参与讨论------来者有分!
ado+sql server为何这么慢? ado+sql server为何这么慢?
如何对SYBASE数据库做日常备份,十万火急 如何对SYBASE数据库做日常备份,十万火急
从SQL SERVER里读数据到ACCESS里,但有3万多条,速度… 从SQL SERVER里读数据到ACCESS里,但有3万多条,速度太慢,怎么解决??
用什么工具能改变应用程序的图标?? 用什么工具能改变应用程序的图标??
如何在用无线网卡的CE环境下,用程序直接连SQL Serv… 如何在用无线网卡的CE环境下,用程序直接连SQL Server数据库啊?
请教打开access窗体时的条件语句、 请教打开access窗体时的条件语句、
鱼龙混杂的垃圾论坛!!!!!!!! 鱼龙混杂的垃圾论坛!!!!!!!!
请教,在delphi中使用SQL Server数据库,程序执行时… 请教,在delphi中使用SQL Server数据库,程序执行时沙漏如何消除?
Microsoft .NET 框架无法安装 Microsoft .NET 框架无法安装
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎