将所有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;
中间代码要加一个Break; if E<>0 then begin Count:=-1; Break; end else begin inc(Count); Sum:=Sum+int; end;
var
i:integer;
begin
try
i:=strtoint(labelededit1.Text);
except
labelededit1.Text:='';
i:=0;
end;
self.Caption:=inttostr(i);
end;
每当执行到下面这种模块时(共有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;
IDE环境中肯定会捕捉到异常,你单独运行试一下吧
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;
begin
Count:=-1;
Break;
end
else
begin
inc(Count);
Sum:=Sum+int;
end;