|
_9 L: M' |( [0 }$ g4 S7 P& }
在onKeyPress事件中作一些处理 " p: Z' s- |; q. a& {
使得输入只能是数字和一个小数点 ) I5 t- h2 @- w, J) v
% p& w. M1 m& ] T! [然后设置相应的标志。 . M9 N/ ~1 k( y9 u
0 V! g: g! l! @; x% o当然,还有另外的办法,就是用pos函数来查找是否有小数点
' l, V# ]2 J) U' Y3 C如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
{& [2 \2 s; b" Q( @0 O就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
' i1 ^; P2 t, h* D: k# J, j. E2 R4 B6 d此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 ) y" {! Q% i1 c4 I: [
3 M* _: d5 J* N% I& H, |于是,还有第三个办法,用好Exception
4 p4 Z9 f& P" h: t2 T4 A2 w) g首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 % i: M e6 F7 S) b
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 : P+ u: x/ w8 X: y, T2 j4 Q9 I
就表明不是合法的数字
$ T' e7 ^' N: N$ a4 c9 D V' n4 ^这个办法最方便。大概的程序代码如下 : D, F0 [. D; |/ X: j6 M0 L
2 s6 s% ?9 R2 M
try 7 ]: y. @- d) w, t$ a6 ^; C: V
{ 1 O% ^) q+ |1 [
Edit1->Text.ToDouble(); . Q- s% c, u Z3 d/ J" k+ `
try ' x8 K5 V6 f5 D( ?0 W6 @* d/ K6 [) c0 g
{ 8 v- E) C2 A' @1 s4 y9 j
Edit1->Text.ToInt();
6 `0 H9 T; H- ^: g3 d6 G ShowMessage("is a int");
) {, ]4 \" L; T7 k }
% y/ K3 T1 ?" j9 ~' _ catch(const EConvertError &e) 3 c' R" N' C8 K; r. P* l
{
: a4 Z/ a1 g* @3 b/ B ShowMessage("is a double"); . N& w+ M% {+ X+ i0 h" \
} 7 X1 k* \& h$ K; u, e2 F5 \( F. ~
} Q3 a r! |0 f8 `9 k
catch(const EConvertError &e)
, p1 R, r- l1 ~ {
/ V- D0 [$ T3 X6 I" Q( i6 a1 X+ u: i) g ShowMessage("not a int ot double");
; J# ?0 z" n5 w- `( b }
# [; N, i/ t; _; k4 _( L- b
2 a; |. b5 c% |上面的代码已通过调试 |