数学建模社区-数学中国

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

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

0 V) \3 Q! n5 B$ l! ?

在onKeyPress事件中作一些处理

" z3 h4 s* x# |0 @" n

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

! q0 H% f7 L# B5 {/ r7 r& A

p( Q# m) P! C# b) ?

然后设置相应的标志。

3 v8 p: w, F" A9 u0 s$ m

" W9 G! D7 w& l4 }: W9 J

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

7 P/ V" e! M9 V

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

& z2 F3 q4 r" n

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

, L7 }% T8 H& H f% ] ^

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

1 k v* T7 P4 ^" v, W4 t4 z6 g

9 k+ [ J9 @ n: k& Q% F

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

- f$ Z# {+ J; ~% W7 a

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

\! E7 [: H j& i/ o$ t

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

5 Q6 U. a' t( w# w+ |& F0 f

就表明不是合法的数字

9 w- D# ^- f' v$ D" z$ ^' W

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

9 M# b8 r1 `) Q' G

* c2 x: h$ _( u) l/ G! k

try

! K: O A0 J3 E! O- b% w

{

7 R; S$ Y9 ]* F x; @

Edit1->Text.ToDouble();

. G8 _6 D' ^3 z. n4 `7 ?

try

3 ?- m% m4 T @1 x% o' U0 s% Y

{

$ k) t0 W: @' _: p4 k

Edit1->Text.ToInt();

6 u: E0 x6 j( V: |

ShowMessage("is a int");

- {. f. A5 ~4 h

}

( k) P& Y q$ v( G/ i! e, }5 ]' X

catch(const EConvertError &e)

, ^2 U1 V; l5 _( ^

{

% k: @0 M" s6 D% z

ShowMessage("is a double");

& P$ a0 b( b6 K- V# C4 r. P

}

7 |! R" ^. ` q4 [$ u9 m% f7 ]

}

+ |1 e7 ^" h! |6 e. K+ j: H" C! E

catch(const EConvertError &e)

. B7 s* t. u) T- H

{

& r2 z0 u& D% n! g5 V r' _

ShowMessage("not a int ot double");

& K( N3 @/ L( O

}

: Z& x) c3 {! f0 F: S1 o

% U- N, N1 f3 b7 \2 q. E3 P

上面的代码已通过调试






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