我在前面定义了这样一个自定义数据类型
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时不是实型吗?
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时不是实型吗?
难道在 procedure (p)和先前定义的那个p数组不是一个变量 ??
头晕~~明天再细看你的程序
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;
现在帖全了 !~
c[bzj,0]:=p[0,bzj]-3*p[1,bzj]+3*p[2,bzj]-p[3,bzj];
^^ 报错!~ Array type required
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 ;
因为前面定义了 vector是一维数组,后面又定义一维数组p是vector型,所以是二维的数组!~真正的问题是:我在过程定义时那个实参的问题!~
procedure TForm1.BezierCurve(P:vector;count:integer);
^^^^^^^^
应该定义为 procedure Tform1.bezierCurve(p:array of vector;count:integer);这样这个实参P才是二维数组!~ 谢谢~各位了