再次请教 C++ ==>Delphi问题,谢谢(100分)

  • 主题发起人 主题发起人 DeityFox
  • 开始时间 开始时间
D

DeityFox

Unregistered / Unconfirmed
GUEST, unregistred user!
++代码:<br>AREAINFO m_AreaInfo[100];<br>int m_AreaCount = 89;<br>char m_grpBuffer[128 * 1024];<br>DWORD *dwOfsList &nbsp;= (DWORD*)&amp;m_grpBuffer[12]; <br><br>char * GetStreamPtr( int id )<br>{<br> if( id &lt; 0 || id &gt;= m_AreaCount * 2 + 2 )<br> return NULL;<br> return (&amp;m_grpBuffer[dwOfsList[id * 2]]);<br>}<br><br>我改成下面的代码,错误是dwOfsList不能进行[]操作,必须数组才行<br>var<br>&nbsp; m_grpBuffer:array[0..128*1024-1] of char;<br>&nbsp; m_AreaCount:integer;<br>&nbsp; dwOfsList:PDWORD;<br><br>function TForm1.GetStreamPtr(id: integer): pchar;<br>begin<br>&nbsp; &nbsp;dwOfsList := PDWord(@m_grpBuffer[12]);<br>&nbsp; if (id&lt;0) or (id&gt;= m_AreaCount * 2 + 2) then<br>&nbsp; &nbsp; Result:=nil<br>&nbsp; else<br>&nbsp; &nbsp; Result:=@(m_grpBuffer[dwOfsList[id * 2]]);<br><br>end;<br>//Result:=@(m_grpBuffer[dwOfsList[id * 2]]); 错误!<br>//Array type required<br>
 
Result:=@(m_grpBuffer[m_grpBuffer[12 + id * 2]]);<br>
 
你试试这样:<br>else<br>&nbsp; begin<br>&nbsp; &nbsp; inc(dwOfsList,id*2);<br>&nbsp; &nbsp; Result:=@(m_grpBuffer[dwOfsList^]); <br>&nbsp; end;<br><br>我现在手头没有delphi,不太好调,你是C++转delphi,我是delphi转C++,苦也。<br>你的程序中有几个转换过程,你自已要清楚是不是这样转换的。
 
楼上的代码稍稍有点问题,你注意到没有,他需要的地址值是dword的,也就是四字节,<br>而dwOfsList数组是char数组,所以m_grpBuffer[12 + id * 2]取出的地址也是char型的,<br>与楼主的要求不符。
 
远帆兄搞起C++了,恭喜恭喜<br>没什么好说的,指针问题<br>var<br>&nbsp;m_grpBuffer:array[0..128*1024-1] of char;<br>&nbsp;m_AreaCount:integer;<br>&nbsp;dwOfsList:DWORD;<br><br>function TForm1.GetStreamPtr(id: integer): pchar;<br>begin<br>&nbsp; dwOfsList := DWord(@m_grpBuffer[12]);<br>&nbsp; if (id&lt;0) or (id&gt;= m_AreaCount * 2 + 2) then<br>&nbsp; begin<br>&nbsp; &nbsp;Result:=nil;<br>&nbsp; &nbsp;Exit;<br>&nbsp; end;<br>&nbsp; inc(dwOfsList,id*2);<br>&nbsp; Result:=@(m_grpBuffer[PWORD(dwOfsList)^]);<br>end;
 
哈,是你啊!现在如何?<br>我在武汉硕思,刚学C++现在晕得很啊!<br>嗯,你会不会动态创建一个控件?要是会的话,到<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=2486480<br>帮我答一下如何?
 
c++.net没有玩过,好象和6.0有些变化,不知道<br>呵呵,我现在搞java,还可以<br>好怀念delphi.......
 
我前一阵子也看了一下java,感觉还是java和delphi类似一点。不过java也是有些怪怪的,它的属性好像也不能直接设置,经常是xxx.setxxx,不过C++就更怪了,得用winapi和发消息。
 
多人接受答案了。
 
后退
顶部