不用循环可以这样 B := True; if Edit1.Text = Edit2.Text then B := False; if Edit1.Text = Edit3.Text then B := False; if Edit1.Text = Edit4.Text then B := False; .....省略若干语句 if Edit1.Text = Edit100.Text then B := False;if Edit2.Text = Edit3.Text then B := False; if Edit2.Text = Edit4.Text then B := False; if Edit2.Text = Edit5.Text then B := False; .....省略若干语句 if Edit2.Text = Edit100.Text then B := False;.....省略跟多的若干语句
首先须解决这100个EDIT是怎么定义的问题。应该用控件数组定义这100个EDIT,才谈得上自动判断。 当某个EDIT被改动时,可以触发一个changed事件,事件处理的入口将带有该EDIT的序号。将该序号下的edit数组的值和其他99个进行比较,如果有相同则发出警告。//以下为伪码 //假设 Id 为被触发的edit序号,edit1为控件数组 for i:=1 to 100 do begin if (Id<>i) and (edit1(Id).text=edit1(i).text) then 警告; end;
begin
for j:= i + 1 to 100 do
begin
end;
end;
声明一个stringlist,按 edit值=edit序号 的格式存放输入的值
完成一个edit的输入之后判断,如果 values[输入的edit值]<>''那么就是已经有edit有这个值了,那么就提示重复。如果没有重复,则添加 values[edit值]=edit序号这样循环的部分就被控件自己处理了
B := True;
if Edit1.Text = Edit2.Text then B := False;
if Edit1.Text = Edit3.Text then B := False;
if Edit1.Text = Edit4.Text then B := False;
.....省略若干语句
if Edit1.Text = Edit100.Text then B := False;if Edit2.Text = Edit3.Text then B := False;
if Edit2.Text = Edit4.Text then B := False;
if Edit2.Text = Edit5.Text then B := False;
.....省略若干语句
if Edit2.Text = Edit100.Text then B := False;.....省略跟多的若干语句
当某个EDIT被改动时,可以触发一个changed事件,事件处理的入口将带有该EDIT的序号。将该序号下的edit数组的值和其他99个进行比较,如果有相同则发出警告。//以下为伪码
//假设 Id 为被触发的edit序号,edit1为控件数组
for i:=1 to 100 do
begin
if (Id<>i) and (edit1(Id).text=edit1(i).text) then 警告;
end;
把100个edit 的值存到表中当edit修改一次 ,就根据id(edit的序号)修改一次edit_value(edit的值)然后利用SQL语句:Select distinct edit_value from edit_table 得到查询结果
然后看RecordCount的值,若小于100 则说明重复,若等于100 则说明没有重复,若大于100 则说明你的表的内容搞错了!^_^,这样就没有循环了。