这个女人 到底对不对 ( 积分: 100 )

  • 主题发起人 主题发起人 it80
  • 开始时间 开始时间
I

it80

Unregistered / Unconfirmed
GUEST, unregistred user!
常看到一些c++中的程序翻译成delphi的,如: <br> &nbsp; &nbsp; &nbsp; CComPtr&amp;lt; IAA &amp;gt; pAA;<br> &nbsp; &nbsp; &nbsp; &nbsp;CComPtr&amp;lt; IAA&amp;gt; pBB;<br> &nbsp; &nbsp; &nbsp; &nbsp;pABC-&amp;gt;function1(&amp;pAA);<br> &nbsp; &nbsp; &nbsp; &nbsp;Function2(pAA, &nbsp;0, &amp;pBB);<br> &nbsp; &nbsp; &nbsp; &nbsp;if(pBB)<br> &nbsp; &nbsp; &nbsp; &nbsp;{...}<br>----------------<br>HRESULT Function2(IAA *pIn, &nbsp;int n, IAA **ppIn)<br>{<br> &nbsp; &nbsp;if (!ppIn)<br> &nbsp; &nbsp; &nbsp; &nbsp;return E_POINTER;<br>翻译成delphi是:<br> &nbsp; &nbsp; &nbsp; var: pAA, pBB:IAA;<br> &nbsp; &nbsp; &nbsp; &nbsp;pABC.function1(pAA);<br> &nbsp; &nbsp; &nbsp; &nbsp;Function2(pAA, &nbsp;0, pBB);<br> &nbsp; &nbsp; &nbsp; &nbsp;if assigned(pBB) then<br> &nbsp; &nbsp; &nbsp; &nbsp;begin...end;<br>----------------<br> Function2(pIn:IAA; &nbsp;n:int,out ppIn:IAA ):HRESULT;<br>begin<br> &nbsp; &nbsp;if not assigned(ppIn)<br> &nbsp; &nbsp; &nbsp; then result;= E_POINTER;<br> &nbsp; &nbsp;.................<br>但实际上if assigned(pBB) then 后面的程序不会执行,要改成<br>if assigned(@pBB) then才会执行then后面的语句..<br>同理在Funtion2中的 if not assigned(ppIn)的返回值肯定是 E_POINTER;<br>如果改成 if not assigned(@ppIn) 后面才会执行,但是后面的执行中又有错误..<br><br>不知道if assigned(Interface) 到底对不对,为什么在c++中的代码可以执行,但是翻译成delphi的就是错误的.
 
常看到一些c++中的程序翻译成delphi的,如: <br> &nbsp; &nbsp; &nbsp; CComPtr&amp;lt; IAA &amp;gt; pAA;<br> &nbsp; &nbsp; &nbsp; &nbsp;CComPtr&amp;lt; IAA&amp;gt; pBB;<br> &nbsp; &nbsp; &nbsp; &nbsp;pABC-&amp;gt;function1(&amp;pAA);<br> &nbsp; &nbsp; &nbsp; &nbsp;Function2(pAA, &nbsp;0, &amp;pBB);<br> &nbsp; &nbsp; &nbsp; &nbsp;if(pBB)<br> &nbsp; &nbsp; &nbsp; &nbsp;{...}<br>----------------<br>HRESULT Function2(IAA *pIn, &nbsp;int n, IAA **ppIn)<br>{<br> &nbsp; &nbsp;if (!ppIn)<br> &nbsp; &nbsp; &nbsp; &nbsp;return E_POINTER;<br>翻译成delphi是:<br> &nbsp; &nbsp; &nbsp; var: pAA, pBB:IAA;<br> &nbsp; &nbsp; &nbsp; &nbsp;pABC.function1(pAA);<br> &nbsp; &nbsp; &nbsp; &nbsp;Function2(pAA, &nbsp;0, pBB);<br> &nbsp; &nbsp; &nbsp; &nbsp;if assigned(pBB) then<br> &nbsp; &nbsp; &nbsp; &nbsp;begin...end;<br>----------------<br> Function2(pIn:IAA; &nbsp;n:int,out ppIn:IAA ):HRESULT;<br>begin<br> &nbsp; &nbsp;if not assigned(ppIn)<br> &nbsp; &nbsp; &nbsp; then result;= E_POINTER;<br> &nbsp; &nbsp;.................<br>但实际上if assigned(pBB) then 后面的程序不会执行,要改成<br>if assigned(@pBB) then才会执行then后面的语句..<br>同理在Funtion2中的 if not assigned(ppIn)的返回值肯定是 E_POINTER;<br>如果改成 if not assigned(@ppIn) 后面才会执行,但是后面的执行中又有错误..<br><br>不知道if assigned(Interface) 到底对不对,为什么在c++中的代码可以执行,但是翻译成delphi的就是错误的.
 
可以直接使用 if AInterface&amp;lt;&amp;gt;nil then ...
 
if ppin&amp;lt;&amp;gt;nil 不行的话就 if ppin&amp;lt;&amp;gt;0 试试 我没试 呵呵:)
 
翻译成delphi是:<br> &nbsp; &nbsp; &nbsp;[red] var: pAA, pBB;[/red]//缺少类型声明?<br> &nbsp; &nbsp; &nbsp; &nbsp;pABC.function1(pAA);<br> &nbsp; &nbsp; &nbsp; &nbsp;Function2(pAA, &nbsp;0, pBB);<br> &nbsp;[red] &nbsp; &nbsp; &nbsp;if assigned(pBB) then[/red] &nbsp;//assigned测试的是对象的指针,对于结构类型无法测试。 <br> &nbsp; &nbsp; begin...end;<br>----------------<br> Function2(pIn:IAA; &nbsp;n:int,out ppIn:IAA ):HRESULT;<br>begin<br> &nbsp; &nbsp;if not assigned(ppIn)<br> &nbsp; &nbsp; &nbsp; then result;= E_POINTER;<br>
 
var: pAA, pBB;缺少类型声明?<br>-----------------------------是我贴漏了,原来的代码是有<br>var: pAA, pBB:IAA;的<br>而function2 &nbsp;ppIn相当于 pBB,若没有@ppIn就会错误<br><br>delphi帮助中找不到答案
 
文不对题
 
这种方法不好哦
 
我觉得这个办法也不好的。
 
这个题目很吸引人
 
kao,上当了
 
哪个女人对不对。我要和我那口子对比一下,上当了
 
她没有错,很对,每个人都有自己的活法<br>by the way ,她怎么你了来着?
 
晕,又被骗了一把
 
做妊要厚道
 
后退
顶部