我在一个界面中设了10个LabeledEdit输入框,用来接收用户输入的数据,要求是这10个LabeledEdit中用户输入的都必须是数字,因为这10个数字在程序中我要用于数学计算的,如果输入的是非数字字符,那么系统立即挂掉了。我想请教各位高手,如何设立一个校验,验证这10个用户输入的数据是否是数字,如果不是责弹出消息框显示“输入数据有误请重新输入”。希望能给我一段完整点的代码例子,非常感谢!!!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
      try
        i:=strtoint(labelededit1.Text);
      except
        labelededit1.Text:='';
        i:=0;
      end;
      self.Caption:=inttostr(i);
    end;
      

  2.   

    按照你的方法我试了一下,但是还是存在问题,详细代码如下所示。
    每当执行到下面这种模块时(共有10个),如果界面上用户输入的是非数字类型字符如英文字母等,则系统一旦运行到:“temp01:= StrToInt(TAS_NDXS_Sample01_LE.Text);”这句语句时仍旧还是抛出异常报错,报错信息大致意思是:用户输入的内容不是一个有效的Integer值
                begin
                    try
                    //执行到下面这句语句时仍旧还是抛出异常报错,报错信息大致意思是:用户输入的内容不是一个有效的Integer值    
                        temp01:= StrToInt(TAS_NDXS_Sample01_LE.Text);
                    except
                        TAS_NDXS_Sample01_LE.Text:='';
                        temp01:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample01_LE.Text:= IntToStr(temp01);
                end;麻烦高手帮帮再解决解决,非常感谢!!!
    详细代码如下所示:
            var
        count: integer;
        temp01: integer;
                temp02: integer;
                temp03: integer;
                temp04: integer;
                temp05: integer;
                temp06: integer;
                temp07: integer;
                temp08: integer;
                temp09: integer;
                temp10: integer;
                tempsum: integer;
                temp00: double;
    begin    
        count:=0;
                //对第1个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获   
                begin
                    try
                        temp01:= StrToInt(TAS_NDXS_Sample01_LE.Text);
                    except
                        TAS_NDXS_Sample01_LE.Text:='';
                        temp01:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample01_LE.Text:= IntToStr(temp01);
                end;            //对第2个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
                begin
                    try
                        temp02:= StrToInt(TAS_NDXS_Sample02_LE.Text);
                    except
                        TAS_NDXS_Sample02_LE.Text:='';
                        temp02:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample02_LE.Text:= IntToStr(temp02);
                end;            //对第3个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp03:= StrToInt(TAS_NDXS_Sample03_LE.Text);
                    except
                        TAS_NDXS_Sample03_LE.Text:='';
                        temp03:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample03_LE.Text:= IntToStr(temp03);
                end;            //对第4个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp04:= StrToInt(TAS_NDXS_Sample04_LE.Text);
                    except
                        TAS_NDXS_Sample04_LE.Text:='';
                        temp04:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample04_LE.Text:= IntToStr(temp04);
                end;            //对第5个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp05:= StrToInt(TAS_NDXS_Sample05_LE.Text);
                    except
                        TAS_NDXS_Sample05_LE.Text:='';
                        temp05:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample05_LE.Text:= IntToStr(temp05);
                end;            //对第6个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp06:= StrToInt(TAS_NDXS_Sample06_LE.Text);
                    except
                        TAS_NDXS_Sample06_LE.Text:='';
                        temp06:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample06_LE.Text:= IntToStr(temp06);
                end;            //对第7个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp07:= StrToInt(TAS_NDXS_Sample07_LE.Text);
                    except
                        TAS_NDXS_Sample07_LE.Text:='';
                        temp07:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample07_LE.Text:= IntToStr(temp07);
                end;            //对第8个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp08:= StrToInt(TAS_NDXS_Sample08_LE.Text);
                    except
                        TAS_NDXS_Sample08_LE.Text:='';
                        temp08:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample08_LE.Text:= IntToStr(temp08);
                end;            //对第9个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp09:= StrToInt(TAS_NDXS_Sample09_LE.Text);
                    except
                        TAS_NDXS_Sample09_LE.Text:='';
                        temp09:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample09_LE.Text:= IntToStr(temp09);
                end;            //对第10个LabeledEdit的Text属性接收到的用户输入的数据进行异常捕获
        begin
                    try
                        temp10:= StrToInt(TAS_NDXS_Sample10_LE.Text);
                    except
                        TAS_NDXS_Sample10_LE.Text:='';
                        temp10:=0;
                        count:= count+1;
                    end;
                    TAS_NDXS_Sample10_LE.Text:= IntToStr(temp10);
                end;            if count>0 then
                    begin
                        Application.MessageBox('输入的样板制作时耗数据有误','错误',MB_ICONERROR     +     MB_OK);
                    end
                else
                    begin
                        tempsum:= temp01+temp02+temp03+temp04+temp05+temp06+temp07+temp08+temp09+temp10;
                        temp00:= tempsum/10;
                    end;
    end;
      

  3.   

    faint!
    IDE环境中肯定会捕捉到异常,你单独运行试一下吧
      

  4.   

    将所有TLabelEdit 的Tag 值设为1 ,然后用下面代码进行检查procedure TForm1.Button1Click(Sender: TObject);
    var
      i,L:Integer;
      E,int:Integer;
      Sum:integer;
      edt:TLabeledEdit ;
      Count:Integer;
    begin
      Sum:=0;
      Count:=0;
      L:=ControlCount-1;
      for i:=0 to L do
      begin
        if (Controls[i] is TLabeledEdit)and(1=Controls[i].Tag) then
        begin
          edt:=TLabeledEdit(Controls[i]);
          Val(Trim(edt.Text), int, E);
          if E<>0 then
            Count:=-1
          else
          begin
            inc(Count);
            Sum:=Sum+int;
          end;
        end;
      end;
      if Count<0 then
        ShowMessage('不是数字')
      else
        ShowMessage(IntToStr(Sum)+'  '+IntToStr(Count));
    end;
      

  5.   

    中间代码要加一个Break;      if E<>0 then
          begin
           Count:=-1;
           Break;
          end
          else
          begin
            inc(Count);
            Sum:=Sum+int;
          end;