数学建模社区-数学中国

标题: 判断EDIT框输入的是否为数字 [打印本页]

作者: 韩冰    时间: 2005-1-26 12:27
标题: 判断EDIT框输入的是否为数字

5 Q' K5 X9 X8 s( |- i

在onKeyPress事件中作一些处理

9 P" t6 ]1 j0 K

使得输入只能是数字和一个小数点

6 ]9 R( o9 v- x5 {! i

/ o& d0 Z$ v( v! Q4 p' v, B' s

然后设置相应的标志。

7 Y+ ~. F* w9 D* I5 D8 q

& ~$ i4 G3 i' c$ ^: _, g' O

当然,还有另外的办法,就是用pos函数来查找是否有小数点

: ?7 N) K) Y" R* z- K

如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷

! E6 p5 h: a9 M

就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。

) d3 t0 o* Y7 u! C/ U0 ~

此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。

5 U: n- F' } ^2 m2 l0 W4 M9 d2 v# v3 C

0 D M1 e2 j' N! g: R/ T; _ p

于是,还有第三个办法,用好Exception

2 x* F* k% {* ?+ m, n7 c

首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用

+ r7 x3 ^3 ?/ m- V& h5 f

Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之

! V) k# B+ O7 E6 g3 X) M. h( A, V6 j

就表明不是合法的数字

6 S( E1 s" t. @& @' ]" x, ^

这个办法最方便。大概的程序代码如下

6 x! k/ I3 f4 s: p; N. V z, ^

5 {9 r& A" T D5 z$ |9 t* d/ ?+ v' S

try

+ O2 Z2 t; L7 g! O! A

{

, f, @& W g' F; }

Edit1->Text.ToDouble();

% ^* }& ~* ~8 i! }+ v

try

D' Q, K. d2 a8 X6 ~

{

5 J4 P4 H0 Y, R5 ~

Edit1->Text.ToInt();

1 J7 \1 y& g p* w8 I9 J1 H

ShowMessage("is a int");

" T r$ L6 c$ G9 l

}

2 @% E7 G: a# y. W

catch(const EConvertError &e)

6 w$ S4 a) l7 w# \1 @

{

6 c, T8 J4 _7 j _ E

ShowMessage("is a double");

+ {# | s& M* |) D& C

}

# ], N0 M' n& N1 C g, O

}

: x# ]3 F( D4 v; f

catch(const EConvertError &e)

, W* b; @( `2 ]2 O: ?' j

{

0 K% g! U- o5 X; N, f* y

ShowMessage("not a int ot double");

1 N6 H1 o/ s3 X8 _$ T t

}

( ^) H* Z) W3 ~# r( K* r' F9 O

+ p: l% {3 }9 Q$ ]

上面的代码已通过调试






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5