具体要求如下:
一个EDIT   一个BUTTON     由EDIT输入数字.按下BUTTON后获取EDIT.text内的十进制数字并转换成十六进制.并写入内存地址为XXXXXXXX的地方.请大家帮我看一下我的代码有什么问题.我是个新手.还不是很懂.给建议时最好附加代码和注解.谢谢.
BUTTON按键事件里代码如下:
----------
VAR   l: LongWord;
   s: String;begin
      l:= StrToInt (edit1.text);
  s:= IntToHex (l,4);
  //edit1.text:= s;      WriteProcessMemory(pHandle, Pointer($XXXXXXXX),@s, 4, BytesWritten);获取进程并写入进程地址我上面的代码运行并写入后利用edit1.text显示变量s可以正常显示十六进制,可是写入内存就不正确.请各位大人们帮助我一下.拜托了.

解决方案 »

  1.   

    VAR 
      l: LongWord; 
    begin 
      l:= StrToInt (edit1.text);   WriteProcessMemory(pHandle, Pointer($XXXXXXXX),@l, sizeof(LongWord), BytesWritten); 直接写,不能转。
      

  2.   

    不转不行吧?例如:
    00422222  mov ebx,00000064如上情况..64为100的十六进制.当我在edit1里输入时只输入十进制.通过转为十六进制后才写入到内存中.我要将此处00000064  变更为1000,那我不是要将1000转成十六进制3E8后再通过WriteProcessMemory(pHandle, Pointer($00422223),@s, 4, BytesWritten); 这个变量S中的数值写进去吗?
      

  3.   

    那 WriteProcessMemory(pHandle, Pointer($00422223),@s, 4, BytesWritten);  中的@S我改成@L并把转换那步去掉就可以了?我去试试.