ShowMessageFmt('指针: %d', [Integer(@Button1)]);  {14910416}//这个地址是指针的值还是指针的地址?如果指针的什应该与下面的首地址相同吧!
ShowMessageFmt('首地址: %d', [Integer(Button1)]); {15011440}//这个是对象的首地址吧?

解决方案 »

  1.   

    ShowMessageFmt('指针: %d', [Integer(@Button1)]);
    这个是指针Button1的内存地址。
     
    ShowMessageFmt('首地址: %d', [Integer(Button1)]); 
    这个是button1的对象的地址。
      

  2.   

    再看一下就清楚了:
    ShowMessageFmt('指针: %d', [PInteger(Integer(@Button1))^]); 
    这个内容和
    ShowMessageFmt('首地址: %d', [Integer(Button1)]); 是相同的。
      

  3.   


      ShowMessageFmt('%d', [Integer(@Button1)]);//指针变量Button1 的 地址
      ShowMessageFmt('%d', [Integer(Button1)]); //指针变量Button1 的 值
      ShowMessageFmt('%d', [Integer((@Button1)^)]);//相当于上一句{附:格式化显示地址(指针)可以用%p}
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowmessageFmt('%p = %x',[@Button1, Integer(@Button1)]);
    end;