如:from1中有控件edit1,edit2...edit11,button
我要edit1.text+edit2.text+...+edit10.text=edit11.text
如何用for语句使他们相加,并得出结果!

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    j,sum:Double;
    begin
       sum:=0;
     for i :=1  to 11 do
      if TryStrToFloat(Tedit(FindComponent('edit'+inttostr(i))).Text,j) then begin
       sum:=sum+j;
      end;
      showmessage(floattostr(sum));
    end;
      

  2.   

    这个不用for 应该也可以做吧for I := 0 to compentscount -1 do
    bein
      if compents[I] is TEdit then 
      begin
        num := strtoint((compents[I] as TEdit).text);
        sum := sum + num;
      end;
    end; 这样写要注意的几点
    1、必须确定该form里的edit控件都是用来做加法用的,没有用做其他用途的edit,如果有,那么就需要加入其他判断,比如name的判断等等,这个根据自己需要来2、如果可肯出现异常,比如字符串不能转换成数字等情况,用try包起来,运算之前先检查字符有效性就更好了
      

  3.   

    你可以再加一个EDIT,例如是EDIT12,让其显示最后的结果:procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    j,sum:Double;
    begin
       sum:=0;
     for i :=1  to 11 do
      if TryStrToFloat(Tedit(FindComponent('edit'+inttostr(i))).Text,j) then begin
       sum:=sum+j;
      end;
      edit12.text:=floattostr(sum);{显示最后结果}
    end;
      

  4.   

    多谢两位.
    GDTOPONE的回答比较接近我的想法,GDTOPONE能不能说明下这句的意思:
    if TryStrToFloat(Tedit(FindComponent('edit'+inttostr(i))).Text,j) then begin
      

  5.   

    FindComponent是根据名称返回控件.Tedit(FindComponent('edit'+inttostr(i)))是转回类型.TryStrToFloat()是将字串转为浮点型如果转换成功则返回TRUE,否则返回FALSE同时不会报错而StrToFloat则会报错.文化水平低,可能解释得不够好,请见谅!