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. 「CF724G」Xor-matic Number of the Graph「线性基」

    题意 求所有点对\(u,v\),\(u\)到\(v\)所有不同的异或路径的异或值之和,对\(10^9+7\)取模 题解 求出一个dfs树,那么\(u\)到\(v\)的路径一定是树上路径异或一些环.这些 ...

  2. jQuery系列(十三):实现轮播

    1.轮播一: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. vue-cli 3.x 修改dist路径和在本地查看方法

    打包文件路径问题 需要在项目的根目录添加一个vue.config.js.在这个文件中,我们可以进行一些个性化定制. module.exports = { // 基本路径 baseUrl: './', ...

  4. 【洛谷2053】 [SCOI2007]修车(费用流)

    传送门 洛谷 Solution 考虑把每一个修车工人拆成\(n\)个点,那么考虑令\(id(i,j)\)为第\(i\)个工人倒数第\(j\)次修车. 然后就可以直接跑费用流了!!! 代码实现 /* m ...

  5. godaddy SSL证书不信任

    在使用网上教程的部署godaddy证书,会出现证书不受信任的情况. 各别审核比较严格的浏览器会阻止或者要求添加例外.情况如下: 利用在线证书测试工具会提示根证书的内容为空.从而导致证书不受信任. 解决 ...

  6. python 找出数组重复的元素

    """ 从头扫到尾,只要当前元素值与下标不同,就做一次判断,numbers[i]与numbers[numbers[i]], 相等就认为找到了重复元素,返回true,否则就 ...

  7. 什么叫Closed-form闭式解

    转自百度知道 与数值解对应的是解析解 闭式解closed form solution)也叫解析解(analytical solution),就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就 ...

  8. Python接口测试-模块引用与映射

    PyCharm中发现模块引用老是有各种问题 可以用映射来解决,例如需要调用登录模块里面的东西的时,可以这样处理: 登录模块:1-login.py import this import requests ...

  9. AB窗体互传参数本质

    一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐,根本就是本窗体的属性(对象)的传递,1实例化2把实例化后的窗体属性=本窗体的对象 二.传递的的时候都是在互相引用的时候传递,推荐的个人认为最简单 ...

  10. [Java复习] 多线程 Multithreading

    Q1多线程基础 进程和线程? 进程: 1. 一段程序执行过程,动态的,相对而言程序是静态的.(与类和对象的关系类似) 2. CPU资源分配最小单元,包括CPU调度和资源管理. 3. 一个进程可以有多个 ...