请帮助我改几行代码,从C到Delphi,谢谢。(如果分数不够的话,我可以把全部分数(690分)都给您,只要帮我解决了问题) ( 积分: 200 )

  • 主题发起人 主题发起人 lifencheng
  • 开始时间 开始时间
L

lifencheng

Unregistered / Unconfirmed
GUEST, unregistred user!
C:<br>HANDLE &nbsp; hMenu;<br>hMenu = GlobalAlloc(GMEM_MOVEABLE,sizeof(XLOPER)*5*4);<br>px = pxMenu = (LPXLOPER) GlobalLock(hMenu);<br>for (i=0; i&lt;4; i++) {<br>for (j=0; j&lt;5; j++) {<br>px-&gt;xltype = xltypeStr;<br>px-&gt;val.str = g_rgMenu[j];<br>px++;}<br>上面这句delphi如何写?我是这样写的,不知对否<br>delphi:<br>var hmenu:thandle;px,pxmenu:LPXLOPER;//LPXLOPER为^xloper,xloper在delphi中是record类型,可以确定的是从C中改写的数据类型是没有错的,就是以下的不明白 &nbsp; <br>hMenu := GlobalAlloc(GMEM_MOVEABLE,sizeof(XLOPER)*5*4);//sizeof(XLOPER)能不能取到真正的大小。<br>pxMenu := GlobalLock(hMenu);//这句是这样吗?<br>px:=pxmenu;<br>for i:=0 to 3 do<br> for j:=0 to 4 do<br> begin<br> px.str:=''; <br> inc(px);<br> end;
 
C:<br>HANDLE &nbsp; hMenu;<br>hMenu = GlobalAlloc(GMEM_MOVEABLE,sizeof(XLOPER)*5*4);<br>px = pxMenu = (LPXLOPER) GlobalLock(hMenu);<br>for (i=0; i&lt;4; i++) {<br>for (j=0; j&lt;5; j++) {<br>px-&gt;xltype = xltypeStr;<br>px-&gt;val.str = g_rgMenu[j];<br>px++;}<br>上面这句delphi如何写?我是这样写的,不知对否<br>delphi:<br>var hmenu:thandle;px,pxmenu:LPXLOPER;//LPXLOPER为^xloper,xloper在delphi中是record类型,可以确定的是从C中改写的数据类型是没有错的,就是以下的不明白 &nbsp; <br>hMenu := GlobalAlloc(GMEM_MOVEABLE,sizeof(XLOPER)*5*4);//sizeof(XLOPER)能不能取到真正的大小。<br>pxMenu := GlobalLock(hMenu);//这句是这样吗?<br>px:=pxmenu;<br>for i:=0 to 3 do<br> for j:=0 to 4 do<br> begin<br> px.str:=''; <br> inc(px);<br> end;
 
delphi中sizeof能取到变量表示和类型实例的字节数,sizeof(XLOPER)应该是正确的<br>(LPXLOPER) GlobalLock(hMenu); 这句在C中因该是强制类型转换<br>把pxMenu := GlobalLock(hMenu);这句改成pxMenu := LPXLOPER(GlobalLock(hMenu));试一下<br>其他的我看都正确<br>C好长时间没看了,手里有没有资料,只能说上面那些了
 
后退
顶部