Variant类型转换成CString代码

  对数据库的操作常常会用Variant和_bstr_t类型,在进行MFC等程序中,通常会用到CString类。从variant转换成CString代码如下:view plaincopy to clipboardprint?

  

plaincopy to clipboardprint?
CString VariantToString(_variant_t var)  
{  
    CString strValue;  
    _variant_t var_t;  
    _bstr_t bstr_t;  
 
    COleCurrency var_currency;  
 
    switch(var.vt)  
 
    {  
 
    case VT_EMPTY:  
 
    case VT_NULL:strValue=_T("");break;  
 
    case VT_UI1:strValue.Format("%d",var.bVal);break;   //bool  
 
    case VT_I2:strValue.Format("%d",var.iVal);break;    //int  
 
    case VT_I4:strValue.Format("%d",var.lVal);break;    //long  
 
    case VT_R4:strValue.Format("%f",var.fltVal);break;  //float  
 
    case VT_R8:strValue.Format("%f",var.dblVal);break;  //  
 
    case VT_CY:  
        var_currency=var;  
        strValue=var_currency.Format(0);break;  
 
    case VT_BSTR:  
        var_t =var;  
        bstr_t=var_t;  
        strValue.Format("%s",(const char *)bstr_t);  
        break;  
 
    case VT_DATE:           //时间类型  
        {  
            CTime  myTime(((COleDateTime)var).GetYear(),   
                ((COleDateTime)var).GetMonth(),   
                ((COleDateTime)var).GetDay(),   
                ((COleDateTime)var).GetHour(),   
                ((COleDateTime)var).GetMinute(),   
                ((COleDateTime)var).GetSecond());   
            strValue = myTime.Format("%Y-%m-%d %H:%M:%S");  
        }  
        break;  
 
    case VT_BOOL:strValue.Format("%d",var.boolVal);  
        break;  
 
    default:strValue=_T("");break;  
 
    }  
 
    return strValue;  

CString VariantToString(_variant_t var)
{
 CString strValue;
 _variant_t var_t;
 _bstr_t bstr_t;

COleCurrency var_currency;

switch(var.vt)

{

case VT_EMPTY:

case VT_NULL:strValue=_T("");break;

case VT_UI1:strValue.Format("%d",var.bVal);break; //bool

case VT_I2:strValue.Format("%d",var.iVal);break; //int

case VT_I4:strValue.Format("%d",var.lVal);break; //long

case VT_R4:strValue.Format("%f",var.fltVal);break; //float

case VT_R8:strValue.Format("%f",var.dblVal);break; //

case VT_CY:
  var_currency=var;
  strValue=var_currency.Format(0);break;

case VT_BSTR:
  var_t =var;
  bstr_t=var_t;
  strValue.Format("%s",(const char *)bstr_t);
  break;

case VT_DATE:   //时间类型
  {
   CTime  myTime(((COleDateTime)var).GetYear(),
    ((COleDateTime)var).GetMonth(),
    ((COleDateTime)var).GetDay(),
    ((COleDateTime)var).GetHour(),
    ((COleDateTime)var).GetMinute(),
    ((COleDateTime)var).GetSecond());
   strValue = myTime.Format("%Y-%m-%d %H:%M:%S");
  }
  break;

case VT_BOOL:strValue.Format("%d",var.boolVal);
  break;

default:strValue=_T("");break;

}

return strValue;
}

  转自http://blog.csdn.net/whf727/archive/2009/05/19/4202120.aspx

CString VariantToString(VARIANT var);转换的更多相关文章

  1. 关于CString与VARIANT(CComVariant)之间的转化

    一.VARIANT.CComVariant类与CString是什么: CString是MFC定义的字符串类,VARIANT是COM标准为了使COM组件能够被各种语言使用(vc++.vb.java.py ...

  2. Char* ,CString ,WCHAR*之间的转换

    关于Char* ,CString ,WCHAR*之间的转换问题 GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用 ...

  3. Cstring, TCHAR*, char*的转换

    最近老用到Cstring, TCHAR*, char*的转换. 找到一篇写得蛮详细的. 引用过来, 方便自己以后查阅. char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底 ...

  4. 关于Char* ,CString ,WCHAR*之间的转换问题

    GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...

  5. JPEG和Variant的转换

    unit Unit1; interface uses   Windows, Messages, SysUtils, Classes, Graphics, Controls,       Forms, ...

  6. char*、string、CString各种字符串之间转换

    参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...

  7. 文件和Variant的转换

    function FileToVariant(FileName: String): OleVariant; var   AStream: TFileStream;   MyBuffer: Pointe ...

  8. 流和Variant的转换

    procedure TForm2.VariantToStream (const v : olevariant;                                   Stream : T ...

  9. bmp和Variant的转换

    procedure TForm2.VariantToBMP(aValue : OleVariant;var aBmp:TBitmap); var    Stream : TMemoryStream;  ...

随机推荐

  1. CF892D—Gluttony(思维,好题)

    http://codeforces.com/contest/892/problem/D D. Gluttony You are given an array a with n distinct int ...

  2. PHP反序列化学习

    在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对 ...

  3. maven mvn 命令行 编译打包

    * 配置好jdk * 下载安装maven http://maven.apache.org/download.cgi apache-maven-3.3.3-bin.zip * 解压到G:\apache- ...

  4. DIV盒子模型介绍 div用法

  5. markdown简单的使用方法

    转自 https://www.cnblogs.com/math/p/se-tools-001.html 作者:正交分解 1.如何切换编辑器 切换博客园编辑器为MarkDown:MarkDown Edi ...

  6. 微擎转移服务器后,出现 require()错误,解决方案

    微擎中切换服务器后出现该问题,有可能是导致配置的问题

  7. Kbengine游戏引擎-【5】用Dockerfile打包镜像kbengine

    本文是以docker为例,以ubuntu 16.04做基础镜像 kengine 1.0.0 用supervisor来管理启动 先放下目录结构图: kb--里面放的是kbengine的编译后的引擎以及d ...

  8. C++中.cpp和.hpp的区别

    原文地址:https://blog.csdn.net/qzx9059/article/details/89210571 c++中 cpp和hpp我们可以将所有东西都放在一个.cpp文件内,编译器会将这 ...

  9. handler定义

    Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中来接收.处理该消息,以避免直 ...

  10. 魔法方法 __slots__ 方法

    场景解析 网游的用户, 大量的用户本质都是类的实例化对象, 在线人数百万级时对内存是很大的挑战, 如何减少这部分的内存 方法解析 __slots__ 方法 取消默认的类实例中的  __dict__  ...