我现在有六个edit控件。我现在需要是在里面分别填入数值。然后求出最大值和最小值。请问应该怎么实现在?

解决方案 »

  1.   

    var
    minValue,maxValue:Integer;
    begin
      minValue := StrToInt(Edit1.text);
      if StrToInt(Edit2.text)< minValue then minValue := StrToInt(Edit2.text);
      if StrToInt(Edit3.text)< minValue then minValue := StrToInt(Edit3.text);
      ...
      maxValue:= StrToInt(Edit1.text);
      if StrToInt(Edit2.text)> minValue then minValue := StrToInt(Edit2.text);
      if StrToInt(Edit3.text)> minValue then minValue := StrToInt(Edit3.text);
      ...
    end;也可使用 TList 来管理界面edit控件
      

  2.   

    var 
    minValue,maxValue:Integer; 
    begin 
      minValue := StrToInt(Edit1.text); 
      maxValue := StrToInt(Edit1.text); 
      minValue := Min(minvalue,StrToInt(Edit2.text));
      maxValue := Max(minvalue,StrToInt(Edit2.text));
      ...
    end; 
      

  3.   

      不好意思。我忘记说了。如果6个edit框内。如果我输入的数值是0,我想让它不参于计算。请帮忙再看下。新手,什么问题都要问。不好意思
      

  4.   

      if Edit1.Text<>'0' then
         ..........
      

  5.   

    if StrToIntDef(edit1.text,0) > 0 then
    beginend
      

  6.   


    //取窗体所有edit组件的最大值,最小值.
    procedure TForm1.Button1Click(Sender: TObject);
    var
      iCount,i : integer;            //组件数量
      minValue,MaxValue:Double;    //最小值,最大值
      editValue: Double;           //当前Edit值
    begin
      i := 0;
      for iCount:=0 to ComponentCount-1 do
      begin
        // 遍历组件.
        if  Components[iCount] is TEdit then
        begin
          try
            editValue:= StrToFloat(Tedit(Components[iCount]).Text);
          except
             editValue := 0;
             Application.MessageBox('数据只能为数字!', '提示', MB_OK + 
               MB_ICONWARNING);
             exit;
          end;
          //查询到是否是每一个Edit组件
          if i = 0 then
          begin
            minValue := editValue;
            MaxValue := editValue;
            Inc(i);
          end
          else
          begin
            if  editValue= 0 then
              Continue;        if minValue> editValue then
                minValue := editValue;
            if MaxValue < editValue then
               MaxValue:= editValue;
          end;
        end;
      end;
      Application.MessageBox(
        PChar('MaxValue='+FormatFloat('###0.##',MaxValue )+#13#10 +'MinValue='+FormatFloat('###0.##',minValue ) ),
               '提示', MB_OK + MB_ICONINFORMATION);
    end;
      

  7.   

    var
    maxNumber,minNumber,number:integer;
    begin
    maxNumber:=0;
    number:=0;
    if (eidt1.text<>'0') and (eidt1.text<>' ') then 
    //不为空;不为0  注意只有Edit1.text 有值时才可以得出,要想它为空其它不为空时有值就重写 
        //其它edit就行了
    begin
    maxNumber:=strtoint(trim(eidt1.text));
    minNumber:=strtoint(trim(eidt1.text));
    if (eidt2.text<>'0') and (eidt2.text<>' ') 
    maxNumber:=Max(maxNumber,trim(eidt2.text))
    maxNumber:=Max(maxNumber,trim(eidt2.text))if (eidt3.text<>'0') and (eidt3.text<>' ') 
    maxNumber:=Max(maxNumber,trim(eidt3.text))
    maxNumber:=Max(maxNumber,trim(eidt3.text))if (eidt4.text<>'0') and (eidt4.text<>' ') 
    maxNumber:=Max(maxNumber,trim(eidt4.text))
    maxNumber:=Max(maxNumber,trim(eidt4.text))if (eidt5.text<>'0') and (eidt5.text<>' ') 
    maxNumber:=Max(maxNumber,trim(eidt5.text))
    maxNumber:=Max(maxNumber,trim(eidt5.text))if (eidt6.text<>'0') and (eidt6.text<>' ') 
    maxNumber:=Max(maxNumber,trim(eidt6.text))
    maxNumber:=Max(maxNumber,trim(eidt6.text))end;end;
      

  8.   

    上面的方法不够快.
    //最大值
    function getmax(a,b:Double):Double
    begin
      result := (a+b)/2 +(a-b)/2;
    end;
    //最小值
    function getmin(a,b:Double):Double
    begin
      result := (a+b)/2 -(a-b)/2;
    end;
    这个在大数据量的时候运算速度比IF判断要快的多.也不需要写那么多的IF判断直接
    procedure TForm1.Button1Click(Sender: TObject);
    var
      iCount,i : integer;            //组件数量
      minValue,MaxValue:Double;    //最小值,最大值
      editValue: Double;           //当前Edit值
    begin
      i := 0;
      for iCount:=0 to ComponentCount-1 do
      begin
        // 遍历组件.
        if  Components[iCount] is TEdit then
        begin
          try
            editValue:= StrToFloat(Tedit(Components[iCount]).Text);
          except
             editValue := 0;         
             exit;
          end;
          //查询到是否是每一个Edit组件
          if i = 0 then
          begin
            minValue := editValue;
            MaxValue := editValue;
            Inc(i);
          end
          else
          begin
            if  editValue= 0 then
              Continue;
            MaxValue := getmax(editValue,MaxValue);
            minValue := getmin(editValue,MinValue) 
          end;
        end;
      end;
      Application.MessageBox(
        PChar('MaxValue='+FormatFloat('###0.##',MaxValue )+#13#10 +'MinValue='+FormatFloat('###0.##',minValue ) ),
               '提示', MB_OK + MB_ICONINFORMATION);
    end;
    因为你不确定你是肯定有六个参与运算.所以只能写到这里了. 否则的话还有别的算法可以优化.不要写IF判断都可以.
      
      

  9.   

      谢谢各位。我后面在 gzmhero 的语句上加个了if 。后面的方法我虽然没试。但是也学到不少东西。可惜分太少。不好意思了。