var
aa:PInteger;
begin
aa := $00D87CBC+$138;
end;
请教,如何相加?

解决方案 »

  1.   

    aa:= Pointer($00D87CBC+$138);这样就可以了但是 maidizhi2 := Pointer(PI^) ; 
    aa:= Pointer(maidizhi2+$138);这样就不可以了
      

  2.   

    var
    pI,maidizhi2,maidizhi3: PInteger;
    const
      baitan =$00D87CBC;
    begin  
      pI:=Pointer(baitan);
      maidizhi2 := Pointer(PI^) ;
      maidizhi3 := Pointer(maidizhi2+$138);
    end;
      

  3.   


    PInteger(Integer($00D87CBC+$138))
      

  4.   

    就是 先取出PI得到得到maidizhi2maidizhi2+$138  却加不了了求教另外,我不是找偏移,偏移我会
      

  5.   


    你那确实可以编译通过但是$00D87CBC  替换成  maidizhi2  就不行了
      

  6.   

    读内存值好读   直接偏移就可以了 但是这次遇到是个奇怪的问题...所以取出PI^  赋予给maidizhi2然后maidizhi2 + $138 就加不了求教
      

  7.   

    那就这样试试呗!
    Pointer(PInteger(maidizhi2)^+$138)
      

  8.   


    看错误提示!!
    maidizhi3 := Pointer(PInteger(maidizhi2)^+$138);
      

  9.   

    那个maidizhi3 我都没动他..没你那个错误提示啊
      

  10.   

    哦知道了
    我没赋值对象
    我把dizhi3搞下来
      

  11.   

    编译通过..但还是不是我要的结果maidizhi3 := Pointer(PInteger(maidizhi2)^+$138);你这个是取出maidizhi2指针+$138
    我要的是 maidizhi2 直接  +$138
    而maidizhi2 是 PI^ 取出来的
    直接相加~~~是不是转换什么?指针我好菜的
      

  12.   


    从你这里看 pi应该是指针类型才对。
      pI:=Pointer(baitan);
      maidizhi2 := pInteger(PI^) ;
      maidizhi3 := Pointer(maidizhi2+$138);
    这样试试,没编译器,没法帮你试下
      

  13.   


    这样试试:
    maidizhi3 := Pointer(Integer(maidizhi2)+312); //312 是 $138的10进制
      

  14.   

    多用几个Pointer中间变量试试。
      

  15.   

    感谢 okmnji79513  问题解决!~~ 谢谢!!!!!