请看:
   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,则它后面的语句也不能执行了。虽然不终止循环对最后的结果无影响,但总觉得有点浪费。

解决方案 »

  1.   

    Break跳出整个循环
    Continue跳出一次循环(本次循环不执行,后面的循环照样执行)
      

  2.   

    为什么不给min赋一个初始值-1呢?;
    这样完全可以用一个循环完成
      

  3.   

    另外 if trim(fields[i].AsString) <> '' then
    可以换成 if not (fields[i].isnull) then
      

  4.   

    Continue跳出本次循环
    Break跳出整个循环
    Exit结束函数
      

  5.   

    for i:=1 to 10 do
             begin
               if trim(fields[i].asstring)<>'' then
                  begin
                  min:=fields[i].AsFloat ;
                      break;          end;
             end;
      

  6.   

    Continue跳出本次循环
    Break跳出整个循环
    Exit结束函数
      

  7.   

    Continue跳出本次循环
    Break跳出整个循环
    Exit结束函数
      

  8.   

    dyf2001(西风) 他们说的对呀,一般的循环有这些就可以了。
    祝你好运。
      

  9.   

    用sql可以直接选出最大值和最小值。
      

  10.   

    谢谢朋友们的热心帮助,我明白了!!
    由于我才开始学习delphi,不懂的地方太多,还请各位朋友见谅!!
      

  11.   

    Continue跳出本次循环
    Break跳出整个循环
    Exit结束函数