关于动态数组请教

李秋步 2003-03-13 02:40:56
我有一段代码如下:

type b=record
p1,p2,p3:integer;
end;

var i:integer;
a:array of b;

for i := 0 to 100 do
begin
setlength(a,high(a)+1);
a[high(a)].p1:=i;
a[high(a)].p2:=i*4;
a[high(a)].p3:=i*3;
end;

为何出现写错误?
...全文
18 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmpeel 2003-03-13
  • 打赏
  • 举报
回复
for i := 0 to 100 do
begin
setlength(a,length(a)+1);
a[length(a)-1].p1:=i;
a[length(a)-1].p2:=i*4;
a[length(a)-1].p3:=i*3;
end;
lincanwen 2003-03-13
  • 打赏
  • 举报
回复
setlength(a,1);
for i := 0 to 100 do
begin
a[ip1:=i;
a[ip2:=i*4;
a[ip3:=i*3;
setlength(a,high(a) + 2); //high返回最高数组的最好维数,如返回3,则实际有4个
//元素,所以重新设置要设置5个元素。
end;
netwolfds 2003-03-13
  • 打赏
  • 举报
回复
在for i := 0 to 100 do的前面加一句setlength(a,1)就没有问题了。
在你第一次setlength(a,high(a)+1);的时候,由于a没有长度,所以high(a)是-1,
你执行的是setlength(a,0),

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧