基本相同的代码,怎么有一个就不对呢;
不出错的代码:
for i := 1 to 15 do
begin
comp_ck_name := 'ck';
comp_ck_name :=comp_ck_name + inttostr(i);
comp_ck := FindComponent(comp_ck_name);
TcheckBox(comp_ck).Checked := true;
end;
出错的代码:
for j := 1 to i do
begin
comp_ck_name := 'ck';
k := Fid_array[j];//Fid_array[j]中存放的也是整形值,而且是不超出控件数目的范围的;
comp_ck_name :=comp_ck_name + inttostr(Fid_array[k]);
comp_ck := FindComponent(comp_ck_name);
TcheckBox(comp_ck).Checked := true;
end;
我是想动态的对相应的控件设置属性的,但这样就是错,也不知怎么回事,真急人;
不出错的代码:
for i := 1 to 15 do
begin
comp_ck_name := 'ck';
comp_ck_name :=comp_ck_name + inttostr(i);
comp_ck := FindComponent(comp_ck_name);
TcheckBox(comp_ck).Checked := true;
end;
出错的代码:
for j := 1 to i do
begin
comp_ck_name := 'ck';
k := Fid_array[j];//Fid_array[j]中存放的也是整形值,而且是不超出控件数目的范围的;
comp_ck_name :=comp_ck_name + inttostr(Fid_array[k]);
comp_ck := FindComponent(comp_ck_name);
TcheckBox(comp_ck).Checked := true;
end;
我是想动态的对相应的控件设置属性的,但这样就是错,也不知怎么回事,真急人;
comp_ck := FindComponent(comp_ck_name);
if Assigned(comp_ck) and(comp_ck is TCheckbox) then //加这个试试
TcheckBox(comp_ck).Checked := true;
begin ////////试试看看
if j>=(length(Fid_array)) then
break;
comp_ck_name := 'ck';
k := Fid_array[j];//Fid_array[j]中存放的也是整形值,而且是不超出控件数目的范围的;
comp_ck_name :=comp_ck_name + inttostr(Fid_array[k]);
comp_ck := FindComponent(comp_ck_name);
TcheckBox(comp_ck).Checked := true;
end;
操作nil指针当然出错
以前对是因为'ck1'~'ck15'的控件都存在
删除其中任意一个当然就有问题了
是不是应是Fid_array[J]呀!