完整的代码如下(您可以把它拷到你的单元文件中直接运行一下看看):
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ZhanName:array of Tlabel;
KaiZhan: array of TCheckBox;
DianLu:array of TCheckBox;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
setlength(zhanname,10);
setlength(dianlu,10);
setlength(kaizhan,10);
for i:=1 to 10 do
begin
if i<=5 then
begin
zhanname[i]:=TLabel.Create(GroupBox1);
zhanname[i].Parent:=GroupBox1;
zhanName[i].Caption:=inttostr(i)+'hehe';
zhanname[i].Left:=8;
zhanname[i].Top:=(-3)+i*26;
zhanname[i].Width:=35; KaiZhan[i]:=TCheckBox.Create(GroupBox1);
KaiZhan[i].Parent:=GroupBox1;
KaiZhan[i].Caption:='开泵';
KaiZhan[i].Left:=68;
KaiZhan[i].Top:=(-6)+i*26;
KaiZhan[i].Width:=45; dianlu[i]:=TCheckBox.Create(GroupBox1);
dianlu[i].Parent:=GroupBox1;
dianlu[i].Caption:='点炉';
dianlu[i].Left:=136;
dianlu[i].Top:=(-6)+i*26;
dianlu[i].Width:=45;
end;
if i>5 then
begin
zhanname[i]:=TLabel.Create(GroupBox1);
zhanname[i].Parent:=GroupBox1;
zhanName[i].Caption:=inttostr(i)+'ouui';
zhanname[i].Left:=216;
zhanname[i].Top:=(-3)+(i-5)*26;
zhanname[i].Width:=35; KaiZhan[i]:=TCheckBox.Create(GroupBox1);
KaiZhan[i].Parent:=GroupBox1;
KaiZhan[i].Caption:='开泵';
KaiZhan[i].Left:=272;
KaiZhan[i].Top:=(-6)+(i-5)*26;
KaiZhan[i].Width:=45; dianlu[i]:=TCheckBox.Create(GroupBox1);
dianlu[i].Parent:=GroupBox1;
dianlu[i].Caption:='点炉';
dianlu[i].Left:=340;
dianlu[i].Top:=(-6)+(i-5)*26;
dianlu[i].Width:=45
end;
end;
end;end.问题是,在关闭窗口以后,就会提示出错。
提示:无效的指针操作。承蒙热心相助则感激不尽。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ZhanName:array of Tlabel;
KaiZhan: array of TCheckBox;
DianLu:array of TCheckBox;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
setlength(zhanname,10);
setlength(dianlu,10);
setlength(kaizhan,10);
for i:=1 to 10 do
begin
if i<=5 then
begin
zhanname[i]:=TLabel.Create(GroupBox1);
zhanname[i].Parent:=GroupBox1;
zhanName[i].Caption:=inttostr(i)+'hehe';
zhanname[i].Left:=8;
zhanname[i].Top:=(-3)+i*26;
zhanname[i].Width:=35; KaiZhan[i]:=TCheckBox.Create(GroupBox1);
KaiZhan[i].Parent:=GroupBox1;
KaiZhan[i].Caption:='开泵';
KaiZhan[i].Left:=68;
KaiZhan[i].Top:=(-6)+i*26;
KaiZhan[i].Width:=45; dianlu[i]:=TCheckBox.Create(GroupBox1);
dianlu[i].Parent:=GroupBox1;
dianlu[i].Caption:='点炉';
dianlu[i].Left:=136;
dianlu[i].Top:=(-6)+i*26;
dianlu[i].Width:=45;
end;
if i>5 then
begin
zhanname[i]:=TLabel.Create(GroupBox1);
zhanname[i].Parent:=GroupBox1;
zhanName[i].Caption:=inttostr(i)+'ouui';
zhanname[i].Left:=216;
zhanname[i].Top:=(-3)+(i-5)*26;
zhanname[i].Width:=35; KaiZhan[i]:=TCheckBox.Create(GroupBox1);
KaiZhan[i].Parent:=GroupBox1;
KaiZhan[i].Caption:='开泵';
KaiZhan[i].Left:=272;
KaiZhan[i].Top:=(-6)+(i-5)*26;
KaiZhan[i].Width:=45; dianlu[i]:=TCheckBox.Create(GroupBox1);
dianlu[i].Parent:=GroupBox1;
dianlu[i].Caption:='点炉';
dianlu[i].Left:=340;
dianlu[i].Top:=(-6)+(i-5)*26;
dianlu[i].Width:=45
end;
end;
end;end.问题是,在关闭窗口以后,就会提示出错。
提示:无效的指针操作。承蒙热心相助则感激不尽。
把for i:=1 to 10 do改为for i:=0 to 9 do
setlength(zhanname,11);
setlength(dianlu,11);
setlength(kaizhan,11);