subject_20930.htm

来自「一些关于vc的问答」· HTM 代码 · 共 18 行

HTM
18
字号
<p>
序号:20930 发表者:焉蓝 发表日期:2002-11-12 11:23:43
<br>主题:大侠,请教一个ado的简单问题
<br>内容:请教_variant_t,_bstr_t的具体概念,为什么用它们,不用以前的类型!谢谢!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:啊志 回复日期:2002-11-12 11:54:35
<br>内容:_variant_t是一种变体类型,用于com组件和vc的数据传递。ado是一种com,所以我们学ado就要学习使用它<BR><BR>_bstr_t其实就是一种字符串类型
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐强军 回复日期:2002-11-13 20:14:18
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;ADO是一种COM组件,_variant_t出现用以促成包含编程者定义的程序函数的标准接口的创建,特别是,variant类型用于IDispatch接口中。<BR>&nbsp;&nbsp;&nbsp;&nbsp;IDispatch接口并不是variant类型的唯一受益者,该类型用在许多接口方法中,这些方法一定返回一个值,而该值可以是几种不同类型之一。ADO或OLE的DB接口中的方法存在着函数用于返回来自数据库查询结果的域值。由于一个域的值可以是任何多种不同的类型,所以当定义一个通用方法以恢复该域值时就出现了问题。解决的方法是返回一个variant类型,由于variant类型含有一个指示当前类型的标记,因此客户端代码可以通过检查这个标记以发现这个域的类型。作为一种替代方法,客户端可以使用VariantChangeTye函数区迫使该类型转换为应用程序所需类型。一个variant类型的基本结构可一定义如下:<BR>&nbsp;&nbsp;typedef struct tagVARIANT{<BR>&nbsp;&nbsp;&nbsp;&nbsp;VARTYPE vt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short wReserved1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short wReserved2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned short wReserved3;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;union{<BR>&nbsp;&nbsp;&nbsp;&nbsp;unsigned char&nbsp;&nbsp;bVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fltVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dblVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cyVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BSTR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bstrVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IUnknown&nbsp;&nbsp; FAR * punkVal;<BR>&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FAR * byref;<BR>&nbsp;&nbsp;&nbsp;&nbsp;.......<BR>&nbsp;&nbsp;&nbsp;&nbsp;};<BR> };<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?