• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > _variant_t,_bstr_t,BSTR等类型转换的问题?

_variant_t,_bstr_t,BSTR等类型转换的问题?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 _variant_t,_bstr_t,BSTR等类型转换的问题?等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: _variant_t,_bstr_t,BSTR等类型转换的问题?
描述:

_variant_t i_code;
_bstr_t beg_date2;
char *  i_scode;
i_code=pRss->GetCollect("id1");//从数据库里读出来得内容
i_code.ChangeType(VT_BSTR);
beg_date2=i_code.bstrVal;
i_scode=(char *)beg_date2;
cout<<i_scode<<endl;
我以前是用vb的,觉得类型定义不定义无所为。现在用C了,类型不能乱用了,有点头晕了。
问题1,从数据库里读出来,要打印出来为什么要这么大费力气类型转过来,转过去啊i_code.ChangeType(VT_BSTR);
beg_date2=i_code.bstrVal;
i_scode=(char *)beg_date2;有简单得方发吗?
2,我写了个com,接口如下
interface IMyComponent1111 : IDispatch{
[id(5), helpstring("method you5")] HRESULT you5(BSTR aa, [out,retval] BSTR * bb);                           }
方发如下:
STDMETHODIMP MyComponent1111::you5(BSTR aa, BSTR *bb)
{
*bb=aa;
return S_OK;
}
调试成功,单我要是想返回一个RS记录集呢?怎么做啊?
我式了很多类型,老是说类型出错。


解决方案1:

_variant_t到char*只要char *str=(char*)(_bstr_t)(var);就行了,不用那么多

解决方案2:

1,
_variant_t Code = pRss->GetCollect("id1"); //数据库里什么类型呀
_bstr_t Str = Code;
cout << (char*)Str << endl;
===============================================================
2,
//返回RS记录集
HRESULT Fun([out, retval] IDispatch** pVal);
{
  ADODB::_RecordsetPtr pRS;
  HRESULT hr = pRS.CreateInstance(__uuidof(ADODB::Recordset);
  if (FAILED(hr))
    return hr;
  *pVal = pRS.Detach();
  return S_OK;
}
//有错,应该这样
STDMETHODIMP MyComponent1111::you5(BSTR aa, BSTR *bb)
{
*bb = ::SysAllocString(aa);
return S_OK;
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • _variant_tstrQuery;中的_variant_t是在定义变量吗?加“_”有特殊的含义吗?
  • _variant_t如何和char比较!
  • _variant_t,_bstr_t,BSTR等类型转换的问题?
  • _variant_t和string,或int类型怎么转换?

相关文章

  • 2017-06-04 用vc做了个automation的com组件,用mfc可以调用,但是用vb调用不了
  • 2017-06-05 请问几个初级问题
  • 2017-06-05 如何获得系统活动窗口并断是IE或QQ或无活动窗口。
  • 2017-06-04 ADO程序错误
  • 2017-06-04 COM数据测试调用问题,很奇怪呀,快来帮我解决呀?
  • 2017-06-04 关于ATL控件的大小改变
  • 2017-06-04 ATL写的DLL控件无法被IE下载安装
  • 2017-06-04 第二次调用showHtml显示空白,为何?
  • 2017-06-05 是高手进来帮帮忙,再晚我也在线等!!
  • 2017-06-04 如何把IE上的操作写到toolbar按钮呼出的dialog框上?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Com的Linking错误,不知为什么??
    • 是权限不够吗?为何ASP调用我的COM无法启动服务?
    • 调试问题(毕业设计)
    • ==关于对话框中多线程问题==
    • 串口控件问题
    • ActiveX控件Win32UnicodeReleaseMinDependency编译时出错:
    • 请教高手什么是接口的迟绑定与早绑定
    • 如何使activex控件接收键盘文字输入
    • 问VCWebBrowser刷新问题,高手请进。。
    • 关于GetStdHandle

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有