例:
var 
  msgbuf:array[0..4095] of byte;
  stackbuf:pointer;
  msglen:integer;
begin
  .....
  ....
  msglen:=integer(sendbuf[0]+(sendbuf[1] shl 8));
  getmem(stackbuf,msglen);
  move(msgbuf[0],stackbuf^,msglen);
  tmpstr:=inttostr(integer(stackbuf));
  showmessage(tmpstr);
  ...
end;
显示的为什么不对呢?是不是inttostr(integer(stackbuf));写错了呢?
请大家帮帮忙,谢谢大家!!!!

解决方案 »

  1.   

    tmpstr:=inttostr(integer(stackbuf));
    这样显示的是指针指向的地址.
    如果需要指向的地址的内容需要
     tmpstr:=inttostr(pinteger(stackbuf)^);
    pinteger的声明应该在sysutils中。估计你已经uses了。
    另外,写成这样好看点
     TmpStr := IntToStr(PInteger(StackBuf)^);
      

  2.   

    inttostr(integer(stackbuf));不能转换指针吧。
    move(msgbuf[0],stackbuf^,msglen);
    改为:move(stackbuf^,msbuf,msglen);
    这句吧指针的内容传给了数组msgbuf,
    如果你传得是ascii码,需要把数组的byte型数据用char()转变为字符。把字符加起来就是字符串了
      

  3.   

    inttostr(integer(stackbuf^));最好用