|
! w- }' }; w/ V1 N9 P4 j. v9 i
在onKeyPress事件中作一些处理
/ j( |& @" L+ e e使得输入只能是数字和一个小数点 ( ?+ F+ ^5 I6 C! O5 W3 d" s/ \3 p
) `1 [ V p P! S- ]8 o5 f8 z! n然后设置相应的标志。 # @6 n4 h- d, [! p' H
$ H9 P8 a. q. z9 a' }
当然,还有另外的办法,就是用pos函数来查找是否有小数点
3 v, c- e5 C: K9 J3 g; [4 m如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
* Q$ W( Q2 ^* j" W* m. ?: a就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 , ]. t- \) }! z
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
1 m* L' l) k( l) l; K3 v! d+ Z/ P
v6 L' j: p. `7 x于是,还有第三个办法,用好Exception
, b* B% |. T; r3 q( [: h首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 ; v2 G1 u! z- C; y- w1 G7 v
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 3 t( k5 ^. |5 A' w1 C) C/ d
就表明不是合法的数字
8 |6 w- _2 t1 k这个办法最方便。大概的程序代码如下 ! a$ j5 |% m; S* ]
2 O: w! ~. B- u7 N. z
try
2 U2 a! M3 O+ {0 r { - ?# C. [& l9 J+ n( k2 C
Edit1->Text.ToDouble();
, O! ]% a0 Q. K& p6 m try ; P+ J; }5 C4 @8 T
{
) N U ^% C- W3 x2 a' a/ { Edit1->Text.ToInt();
! U7 T6 q) V5 `; p n* D ShowMessage("is a int");
9 K5 m9 C( |5 X P3 A7 l }
0 J. H3 q# }2 H( r+ Z catch(const EConvertError &e) 4 `) l! b6 M/ U7 S! B
{
0 {+ y& l* V( |) }$ A6 J& \ ShowMessage("is a double"); / T3 d) w# _1 J& f) k0 |$ V
}
$ X" I# V$ b, R }
1 H4 C- G C8 g catch(const EConvertError &e)
+ r, r2 N" y9 L) J { ) L) T5 _* X! c- u
ShowMessage("not a int ot double"); 4 N9 t" x* L" l* R9 w6 q
} ~: g* b5 G# I* k4 r6 V
7 x3 w2 Z$ x! F9 c6 J8 J" O- X5 G$ V7 |上面的代码已通过调试 |