两个指针变量 m_pTest1和 m_pTest2,只要其中有一个是类成员变量,进行赋值操作时: m_pTest1 := m_pTest2;
就会出现Incompatible types错误,请问这是为什么?

解决方案 »

  1.   

    Object Pascal对指针类型的检查非常严格,这不同于C,一个简单的例子
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a : ^integer;
      b : ^integer;
    begin
        a := b;
    end;
    这样赋值就会Incompatible types,object Pascal会认为每个指针是相异的。
      

  2.   

    to zhuminghua():
    因为我就想测试一下指针,没什么特别的,所以没必要贴了。谢谢!to wudi_1982(︻┳═一编码是一种享受) :
    谢谢!我明白一些了。但下面的写法就没问题,为什么?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a, b : ^integer;
    begin
        a := b;
    end;
      

  3.   

    强制转成Pointer:
    m_pTest1 := Pointer(m_pTest2);
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a, b : ^integer;
    begin
        a := b;
    end;
    这样的写法,编译器会认为他们是同一类型。
      

  5.   

    这样更好些:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a : pinteger;
      b : pinteger;
    begin
        a := b;
    end;