我在前面定义了这样一个自定义数据类型
type vector=array [0..2] of real ;
p:array [0..3] of vector;自己定义了一个过程:
procedure TForm1.BezierCurve(P:vector;count:integer);
const BzX=0;
      BzY=1;
      BzZ=2;
var
  C:array[0..2,0..3] of real;
  t,deltat:real;
  V,newV:vector;
  i,bzj:integer;
 c[bzj,0]:=p[0,bzj]-3*p[1,bzj]+3*p[2,bzj]-p[3,bzj];
当编译到这里的时候提示
Array type required.(需要数组类型)
这是为什么啊?? 难道p在定义为vector时不是实型吗?

解决方案 »

  1.   

    Private symbol 'p' declared but never used 还有这个的错误 !~~~
    难道在 procedure (p)和先前定义的那个p数组不是一个变量  ??
      

  2.   

    你的bzj还没初始化哈~~
    头晕~~明天再细看你的程序
      

  3.   

    procedure TForm1.BezierCurve(P:vector;count:integer);
    const BzX=0;
          BzY=1;
          BzZ=2;
    var
      C:array[0..2,0..3] of real;
      t,deltat:real;
      V,newV:vector;
      i,bzj:integer;
     begin
      count:=100;
      for bzj:=0 to 2 do
      begin
        c[bzj,0]:=p[0,bzj]-3*p[1,bzj]+3*p[2,bzj]-p[3,bzj];
        c[bzj,1]:=       3*p[1,bzj]-6*p[2,bzj]+3*p[3,bzj];
        c[bzj,2]:=                3*p[2,bzj]-3*p[3,bzj];
        c[bzj,3]:=                           p[3,bzj];
      end;
    现在帖全了 !~
      

  4.   

    编译到 
    c[bzj,0]:=p[0,bzj]-3*p[1,bzj]+3*p[2,bzj]-p[3,bzj];
                ^^ 报错!~ Array type required
      

  5.   

    type vector=array [0..2] of real ;
    p:array [0..3] of vector;自己定义了一个过程:
    procedure TForm1.BezierCurve(P:vector;count:integer);
    const BzX=0;
          BzY=1;
          BzZ=2;
    var
      C:array[0..2,0..3] of real;
      t,deltat:real;
      V,newV:vector;
      i,bzj:integer;
     c[bzj,0]:=p[bzj]-3*p[bzj]+3*p[bzj]-p[bzj];
    你定义的P可是一维数组啊,type vector=array [0..2] of real ;
      

  6.   

    好了,不是一维数组的问题!~~
    因为前面定义了 vector是一维数组,后面又定义一维数组p是vector型,所以是二维的数组!~真正的问题是:我在过程定义时那个实参的问题!~ 
    procedure TForm1.BezierCurve(P:vector;count:integer);
                                 ^^^^^^^^               
    应该定义为 procedure Tform1.bezierCurve(p:array of vector;count:integer);这样这个实参P才是二维数组!~ 谢谢~各位了