我用delphi 作了一个过程 其中的参数 是一个动态数组,类型是我定义的纪录类型。这样我在过程内
重新建立了和这个参数 一样的 动态数组 结果不兼容 你们怎么解决的。
procedure CalSgl(SNum : array of spoint; var Op :OPoint ; caltype : Boolean);
var
 sglnum : array of spoint
begin
sglnum := copy(snum , pst , ifoo - pst);//这里替是不兼容类型
..............................
end;
end.

解决方案 »

  1.   

    spoint 是我定义的纪录 可以看作是一个新的数据类型
      

  2.   

    copy(src,start,number)拷贝是字符串函数  
    要拷贝记录copy(snum )就可以了
      

  3.   

    copy(snum )是拷贝整个数组
    sglnum := copy(snum , pst , ifoo - pst);//可以拷贝数组的一部分
      

  4.   

    我的意思和阿飞一样 提示的错误是 incompatible types
      

  5.   

    阿飞 你做过吗
    我怎样才能 把SNum数组总的部分纪录考给sglnum呢
    我参数 是 array of spoint  定义的变量 sglnum 也是 array of spoint 啊 怎的 就不兼容了哦
    我用pointer 坐参数 不知道可行不?
      

  6.   

    type
      TArrayOfspoint=array of spoint;procedure CalSgl(SNum : TArrayOfspoint; var Op :OPoint ; caltype : Boolean);
    var
     sglnum : TArrayOfspoint;
    begin
    sglnum := copy(snum , pst , ifoo - pst);//
    ..............................
    end;
    end.
      

  7.   

    直接赋值不行了,反正没有对象,是深拷贝
    sglnum := snum ;
      

  8.   

    和和  哈欠  谢谢了
    我刚刚也试了一下
    procedure CalSgl(SNum : pointer; var Op :OPoint ; caltype : Boolean);
    var
     temp ,sglnum : TArrayOfspoint;
    begin
     temp := SNum; 
    sglnum := copy(temp , pst , ifoo - pst);//
    ..............................
    end;
    end.
    也能够通过了,还是你的好 方便简洁 用pointer 还不知道会不会 有什么错呢!看来我的基础太差,还要加把劲,谢谢了!截贴了 谢谢大家了。