请看:
with query1 do
begin
//设置最大值的初值
max:=fields[1].AsFloat ; //设置最小值的第一个初值
//判断第一个不为空的分数,然后把它赋给最小值 for i:=1 to 10 do
begin
if trim(fields[i].asstring)<>'' then
begin
min:=fields[i].AsFloat ;
//exit;
end;
end; //逐个比较,得出最后的最大和最小值 for i:=1 to 10 do
begin
if fields[i].AsFloat > max then
max:=fields[i].AsFloat ;
if trim(fields[i].AsString) <> '' then
if fields[i].AsFloat < min then
min:=fields[i].AsFloat ;
end;我的意思是,把一条记录中的第一个不为空的值赋给min(就是去掉一个最高分,去掉一个最低分的问题),然后再逐一比较不为0的值,看最后的min是什么。
但我想知道,在判断出第一个不为空的值并赋给min后,如何终止循环的运行。如果添加exit,则它后面的语句也不能执行了。虽然不终止循环对最后的结果无影响,但总觉得有点浪费。
with query1 do
begin
//设置最大值的初值
max:=fields[1].AsFloat ; //设置最小值的第一个初值
//判断第一个不为空的分数,然后把它赋给最小值 for i:=1 to 10 do
begin
if trim(fields[i].asstring)<>'' then
begin
min:=fields[i].AsFloat ;
//exit;
end;
end; //逐个比较,得出最后的最大和最小值 for i:=1 to 10 do
begin
if fields[i].AsFloat > max then
max:=fields[i].AsFloat ;
if trim(fields[i].AsString) <> '' then
if fields[i].AsFloat < min then
min:=fields[i].AsFloat ;
end;我的意思是,把一条记录中的第一个不为空的值赋给min(就是去掉一个最高分,去掉一个最低分的问题),然后再逐一比较不为0的值,看最后的min是什么。
但我想知道,在判断出第一个不为空的值并赋给min后,如何终止循环的运行。如果添加exit,则它后面的语句也不能执行了。虽然不终止循环对最后的结果无影响,但总觉得有点浪费。
Continue跳出一次循环(本次循环不执行,后面的循环照样执行)
这样完全可以用一个循环完成
可以换成 if not (fields[i].isnull) then
Break跳出整个循环
Exit结束函数
begin
if trim(fields[i].asstring)<>'' then
begin
min:=fields[i].AsFloat ;
break; end;
end;
Break跳出整个循环
Exit结束函数
Break跳出整个循环
Exit结束函数
祝你好运。
由于我才开始学习delphi,不懂的地方太多,还请各位朋友见谅!!
Break跳出整个循环
Exit结束函数