subject_41328.htm

来自「vc」· HTM 代码 · 共 54 行

HTM
54
字号
<p>
序号:41328 发表者:无欲无求 发表日期:2003-05-26 11:47:54
<br>主题:VARIANT的问题,关于参数传递的
<br>内容:在我的COM组件中能够有一个函数,他的其中一个参数为X,(VARIANT X)<BR>但是在这个函数实现的时候,这个X是个数组<BR><BR>我在外部构造数组之后<BR>怎么作为参数传递过去
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:天才 回复日期:2003-05-26 17:45:51
<br>内容:我可能有一点经验,你能不能说清楚一点,最好有部分源码(是不是和SAP系统做接口?)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无欲无求 回复日期:2003-05-26 18:16:40
<br>内容:先谢过了<BR><BR>//产生所需的正弦波<BR>&nbsp;&nbsp;&nbsp;&nbsp;double* xdata=new double[40];<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;40;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xdata[i]=sin((double)i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>//创建COM实例Isgltest<BR>&nbsp;&nbsp;&nbsp;&nbsp;Itestvariant *st;<BR>&nbsp;&nbsp;&nbsp;&nbsp;HRESULT hr=::CoCreateInstance(CLSID_testvariant,NULL,CLSCTX_ALL,IID_Itestvariant,(void**)&amp;st);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (FAILED(hr)) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox("创建COM实例失败");<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//<BR><BR>/*!!!!问题就在这里testfft的声明<BR>virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE testfft( <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* [in] */ long nargout,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* [out][in] */ VARIANT __RPC_FAR *y,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* [in] */ VARIANT x) = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个函数的实现x是一个数组不知道怎么传递<BR>*/<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//st-&gt;testfft();<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;st-&gt;Release();<BR>&nbsp;&nbsp;&nbsp;&nbsp;//释放COM组件<BR><BR>请问如何将数组xdata传递给x
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:天才 回复日期:2003-05-27 10:27:34
<br>内容:你看这样行不行<BR>_variant_t l_vt;<BR>l_vt.vt=VT_BYREF|VT_R8;<BR>l_vt.pdblVal=xdata;<BR>注意:调用COM接口之后再调用delete [] xdata;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无欲无求 回复日期:2003-05-27 11:26:07
<br>内容:我不知道怎么样才能把我的问题描述清楚<BR>不知道你熟不熟悉Matlab<BR>testfft的原型是<BR>Matlab的.m函数<BR>function testfft<BR>fft(x);<BR>因此,在这里x本身就是一个矩阵,或者说是数组<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:天才 回复日期:2003-05-27 11:40:32
<br>内容:我觉得你已经表达清楚了,你有没有试一下我的方法?<BR>你将最后一个参数x定义成_variant_t,然后设置类型,接着赋值,最后调testfft<BR>在线等待结果回复...
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无欲无求 回复日期:2003-05-27 13:49:12
<br>内容:我试过了<BR>但是不行<BR>我的QQ:3399638
<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>回复者:天才 回复日期:2003-05-27 18:04:11
<br>内容:给您一个建议,用www.google.com搜索英文网站(中文不可),可能会有帮助<BR>(另外我以前碰到过传_RecordsetPtr类型的,如_RecordsetPtr* m_pRS,直接用_variant_t((IDispatch *)(*m_pRS),true)赋给一个_variant_t类型的实例,然后用的时候用V_DISPATCH转回来就可以了。)<BR><BR>bye
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:无欲无求 回复日期:2003-05-27 23:28:41
<br>内容:谢谢你的帮助,我继续努力
<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 + -
显示快捷键?