procedure pdFillInterface(Pedit :^Tedit;var arr:array of string);编译时出现:Identifier expected but '^' found

解决方案 »

  1.   

    你直接传TEdit不就可以了吗?本身这就是一个指针啊。
      

  2.   


    procedure pdFillInterface(Pedit :Tedit;var arr:array of string);
    pdFillInterface(Edit1, ...)2 
    Type PTEdit = ^TEdit;
    procedure pdFillInterface(Pedit :PTEdit;var arr:array of string);
    pdFillInterface(@Edit1, ....)
      

  3.   

    type 
      PEdit = ^TEdit
    procedure pdFillInterface(aPedit PEdit ;var arr:array of string);
      

  4.   

    直接传TEdit后,可否让传进来的参数加一,以使其指向下一个TEDIT?
      

  5.   

    不行吧,对象是在堆中分配的,又不是连续分配的。注意delphi的对象引用模型,所以你可以直接传递TEdit的对象
      

  6.   

    TEdit就相当于指针啦,一个对象可以说就是一个指针
      

  7.   

    to hkbarton(→Beginner←):假设在一个类中,连续声明了a,b,c三个变量,那么在该类的对象对应的内存空间中,a,b,c三个变量也应该是连续的,一个指针p指向a,那么(p+1)就应该是指向b的,对么?
      

  8.   

    to redjade(chilly):一个对象不应该就是一个指针,确切地说应该是一段内存空间
      

  9.   

    自定义PEDIT就成了传递指针的指针,无任何助益还降低效率。
    BraveHeart2222:一个对象变量就是一个指针,注意是变量。
      

  10.   

    对呀,delphi中的对像都是指针
      

  11.   

    >to hkbarton(→Beginner←):假设在一个类中,连续声明了a,b,c三个变量,那么在该类的对>象对应的内存空间中,a,b,c三个变量也应该是连续的,一个指针p指向a,那么(p+1)就应该是>指向b的,对么?对象在内存中的结构可以看看那本Inside VCL,我开始也不确定连续的3个类字段在空间上是否连续,因为对象是在堆上被分配的,不过我试了后发现他们的确是连续,也就是说你的说法是正确的。不过你说的(p+1)是不对的,delphi中的指针不向C++中的一样可以这样操作,你必须用inc(p)至于上面很多朋友说的delphi中的对象就是指针,我想这可能是说法上的一个误解。其实delphi中的对象并不是指针,而有其自己的类型,那就类,所以对象只能说是类的实例,可能很多朋友说我这么说是在玩文字游戏,但实际上如果你把一个对象赋值给一个指针通常会得到下面的错误:Pointer类型和Txxx类型不一致,从这点来说就并不能说delphi中的对象就是指针了,因为它有自己的类型---类。不过这个类型有点特殊,那是由于delphi的对象引用模型的原因使得这种类型做为参数传递时始终是传递的地址而不是把一个对象深拷贝给另一个对象,而普通的类型比如integer如果你不指定是引用传递的话,参数传递的过程只是把这个实参的值拷贝一份到过程的形参中去。我想这样说应该就比较清楚了吧。个人观点,也可能有说的不妥的地方