生成行列数个panel,生成最后一行panel时报错,怎么解决?

minipig520 2011-09-05 11:18:47
procedure TForm1.Button2Click(Sender: TObject);
var
pan: array of array of Tpanel;
x,y,m,n: integer;
begin
m := strtoint(edit1.Text); //行数
n := strtoint(edit2.Text); //列数
SetLength(pan,m);
for x := 1 to m do
begin
SetLength(pan[x],n);
for y := 1 to n do
begin
pan[x,y]:=Tpanel.Create(self);
pan[x,y].parent:=Panel2;
pan[x,y].Left:=y*30;
pan[x,y].Top:=x*30;
pan[x,y].Height:=30;
pan[x,y].Width:=30;
pan[x,y].Caption:= inttostr(x)+ '_'+inttostr(y);
showmessage(pan[x,y].Caption);
end;
end;

end;



报错信息为:access violation at address 004056E9 Read of address 0000002E

麻烦大家指正下!!!!
...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
minipig520 2011-09-05
  • 打赏
  • 举报
回复
谢谢~~~散分
mdejtod 2011-09-05
  • 打赏
  • 举报
回复
改为这样:
for x := 0 to m - 1 do
begin
SetLength(pan[x],n);
for y := 0 to n - 1 do
begin
end;
end;
你原来的写法导致数组越界
lght 2011-09-05
  • 打赏
  • 举报
回复
for x := 1 to m do
begin
SetLength(pan[x],n);
for y := 1 to n do

改成

for x := 0 to m-1 do
begin
SetLength(pan[x],n);
for y := 0 to n-1 do

16,748

社区成员

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

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