数学建模社区-数学中国

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

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

0 S, I) r0 u% e

在onKeyPress事件中作一些处理

$ Z0 {$ o, m9 ]; E. h& d

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

. z% t" l1 B; W

7 C8 o( j" {. b$ [3 J `' Z ?/ v

然后设置相应的标志。

3 J( Y2 L; w8 {# E

% P, }) b3 G4 q; D# V

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

3 c2 I0 A. b3 i4 b! X. h

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

" w. ?# o' m! p/ O

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

+ O& _3 R- ^% d9 v. L9 H7 c& f3 i

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

, G% s& w& j3 h5 _4 S& @

& w5 P T4 `1 T a

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

9 h$ o& s( e( _4 B* D) F* M" ^1 n

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

5 Y& ]& U. `0 r8 }5 K& a7 j

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

1 N2 c5 T+ B5 _4 X$ w2 W+ x

就表明不是合法的数字

; w, v0 Q7 x4 a- G* w/ A* k

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

O& Y! u5 X4 y& m7 C# E9 g

% w% h; N& q" u4 K

try

& _; n" @4 }4 Z/ I9 x

{

- T5 U6 F! `& ]# |$ I1 L! K8 u

Edit1->Text.ToDouble();

: N- X4 ~3 }6 A5 X. I: b2 k- z# E

try

* G& e; g e3 `% S

{

' s. P# N" {& _* q) Z, e7 D

Edit1->Text.ToInt();

- L) K$ ^0 C7 R# c# |

ShowMessage("is a int");

8 N) C6 T- z) K

}

1 V% B, z V a

catch(const EConvertError &e)

) R% B/ ~4 r! U5 \

{

; g" k! z3 K- F8 S# ]3 Y' h5 V

ShowMessage("is a double");

0 X. R4 }5 a- c( E

}

* W- S3 H0 S+ H' w6 d/ r

}

) W' A) N+ E. S9 X

catch(const EConvertError &e)

8 u4 T& g3 e5 ~/ a

{

) k" G1 k# g* Q' p; A& p

ShowMessage("not a int ot double");

0 O6 H& `9 |4 J+ b( [

}

% w$ q; V; z% j$ [$ \) g: t

& ~* Y1 }) E+ D; j, C- v

上面的代码已通过调试






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