for i:=6 to 26 do
    begin
     sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
    end;  这一句可以执行,但下句为什么不能执行呢?
   for i:=40 to 48 do
    begin
      sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
    end;

解决方案 »

  1.   

    你确定是否有40多个组件?
    建议用
    try……except……end;结构,免得异常没有处理
      

  2.   

    前面的找到,后面的没找到当然会出错啦,你的写法不对,正确写法是这样的for i:=6 to 26 do
      begin
        if findcomponent('e'+inttostr(i)) is TEdit then
          sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
      end;for i:=40 to 48 do
      begin
        if findcomponent('e'+inttostr(i)) is TEdit then
          sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
      end;
      

  3.   

    for i:=40 to 48 do
    begin
      if FindCompnent('E' + IntToStr(I)) <> nil then
        sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
    end;
      

  4.   

    showmessage('40 '+e40.Text);
           showmessage('41 '+e41.Text);
           showmessage('42 '+e42.Text);这三句均可执行为什么下句不能执行?   for i:=40 to 42 do
        begin
         if findcomponent('e'+inttostr(i)) is TEdit then
          sum:=sum+strtoint(Tedit(findcomponent('e'+inttostr(i))).Text);
        end;
      

  5.   

    var
      Comp: TComponent;
    for i:=40 to 48 do
      begin
        Comp := findcomponent('e'+inttostr(i)); 
        if Assigned(Comp) then
         if Comp  is TEdit then
         try
          sum:=sum+strtoint(Tedit(Comp).Text);
         except 
          showmessage(Tedit(Comp).Text + '不是整数');
         end;
      end;