|
6 q: q6 m: {+ p# v, I: f( f) W在onKeyPress事件中作一些处理 7 Z& R! J: N' O5 X' t6 ^% ]
使得输入只能是数字和一个小数点 0 c1 U$ W+ u9 j7 x2 r( V
6 Q" Q; F- g2 H$ |6 j. g
然后设置相应的标志。
; v4 R" U$ G0 ]6 p& t 4 E0 D6 Q6 e% y T
当然,还有另外的办法,就是用pos函数来查找是否有小数点
: P) n3 O1 d ^0 C如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
$ g' r% h0 h- N6 \; Z就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
. v" S$ W) U0 C此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 1 n4 `8 w# L6 s J4 M Y+ ]6 ~
6 J1 p: `/ c$ ^" U4 z于是,还有第三个办法,用好Exception
% Y/ @8 W0 |2 l' f2 V首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
# V( \9 g9 G( |5 }2 C; q nEdit1->Text.ToDouble,如果不产生异常,那么是小数,反之
0 V* D7 I( Z& z$ }4 o! y Y就表明不是合法的数字
9 ?5 _( C, k1 M+ ]; f& s* f, }+ h这个办法最方便。大概的程序代码如下 ; E7 @; _; X& |9 O5 a8 w1 x3 E
* ~; ? i* Y" z! y( q- J& p" d. _ try / ~2 [; V% C; U" A
{ : Q" l! y+ M6 } v& g
Edit1->Text.ToDouble(); " C; g2 W. c# w
try
" {( K3 b6 g7 y { $ f. e* C+ t, s3 g( ?0 l
Edit1->Text.ToInt(); 7 l% K8 k2 M' n- U
ShowMessage("is a int"); i ]: B: m7 ] b; E; ^' ~ ?
}
2 b, p7 J( l3 i/ U3 { catch(const EConvertError &e) & h/ r: V) K7 _! |
{
; s _- _! S+ F9 ]; F4 x ShowMessage("is a double"); i9 h: Q" h* y, C
} ' p" U T/ {7 T7 \, B. e. |: ~
} ! @' O% S8 f4 g
catch(const EConvertError &e) ' U$ k/ g2 K* ]6 O; {
{
3 F1 Q6 A2 V \ ShowMessage("not a int ot double"); 3 A8 q. _2 M( `. v3 a5 t' u
}
' m% S3 d! P* q& Q( G ; G+ F0 q) }' ^% S/ \
上面的代码已通过调试 |