我定义动态数组为什么总报错?(10分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!
因为不确定数组长度,所以要定义动态数组。可是我这样定义,付值的时候总报错
procedure TForm1.Button1Click(Sender: TObject);
var
send:array of integer;
begin
send:=0;
send[0]:=1;
send[1]:=2;
send[2]:=3;
send[3]:=4;
end;
另外初始化send怎么写?可以send:=0;吗?
我如果写send:=1就提示类型不匹配:(
 
SETLENGTH(SENG,SEND_LENGTH)
初始化SEND:=NIL;
 
SETLENGTH(SENG,SEND_LENGTH)
是什么意思?
可我看书好象定义动态数组是我的那种方法啊
 
procedure TForm1.Button1Click(Sender: TObject);
var
send:array of integer;
begin
SetLength(Send,4);//设置数组长度,分配内存
send[0]:=0;
send[1]:=1;
send[2]:=2;
send[3]:=3;
end;
 
:yayiye, 我就是因为数据长度不固定才定义动态数组的。如果我知道数据长度我就直接
var
send:array[0..3] of integer;
不就行了。
我是想动态定义数组,长度根据我的数据长度自动来分配内存。动态数据的目的不正是如此吗?
 
procedure TForm1.Button1Click(Sender: TObject);
var
send:array of integer;
begin
ArrLength:=4;
SetLength(Send,ArrLength);//设置数组长度,分配内存
//你这里可以是一个变量呀,当程序运行到这里你总该知道数组是多长了吧,
//你可以给ArrLength变量赋一个数值.
//动态数组是指你可以动态改变一个数组的长度,
//但并不是它可以根据你设的下标来确定长度.
//所谓动态改变长度就是用SetLength函数来改变.
//如果你用Array[0..3]的方式定义静态数组组你试试用什么方式也以改变数组长度?
send[0]:=0;
send[1]:=1;
send[2]:=2;
send[3]:=3;
//这里的下标不能超过ArrLength-1,否则会出错.
//
//如果发现Send原来设置长度为4已经不够了,需要改成5,
//你可以在这里用Setlength(send,5)来改变长度.
ArrLength:=5;
Setlength(Send,ArrLength);
end;
 
后退
顶部