|
/ g) A. P) k k4 y在onKeyPress事件中作一些处理
+ B6 U6 H x# c6 m4 I4 ?使得输入只能是数字和一个小数点
w7 }$ X; N9 x# o& Q4 w- l
- ?1 \) E" x+ m3 [: ]5 M6 M* w然后设置相应的标志。
% r9 Q5 I s. L, t( @8 D5 ?
3 z8 K% j) w5 I# m$ |$ I2 v当然,还有另外的办法,就是用pos函数来查找是否有小数点
+ r" i9 \6 a' `% E' C T; i如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 & D! H% v1 v5 ~6 f# ?) f
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 - |) t3 P9 `. h# h; A
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 : n8 F$ {2 B/ s
4 Y! y/ |; k+ r7 Y" ?
于是,还有第三个办法,用好Exception * H4 I$ l8 g. z% Y- u ?
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 1 @7 t2 O ?+ b8 B( P
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 + j4 r2 h C" J( T, v* P
就表明不是合法的数字
6 n2 B9 f; g% {, U+ ~( ]! `; y这个办法最方便。大概的程序代码如下 - v. |. w: [! c, J
4 \ ^0 }" Q- o! p1 V& \ try 5 P" x# P1 J! o. D
{ # X4 q7 H% |* I' F3 c: I* w
Edit1->Text.ToDouble();
5 J& J' T. j+ e h6 ? try 7 Y* V7 R# h( I3 s1 D+ e4 A4 Y% u p
{ + i7 d2 u) X2 Q1 P5 D: u$ L
Edit1->Text.ToInt();
# W/ _; ] ^4 Q$ l: N6 f5 [ a, N ShowMessage("is a int");
) x' M7 `' b m$ \ }
+ `- P$ I J$ p1 E catch(const EConvertError &e)
! i# j1 _/ z' O$ N {
1 U, `6 T/ s" S ShowMessage("is a double"); / \9 W4 _, x1 T g
} 0 g5 T. K: Z: A
}
U6 W0 k4 U! B4 p: G% { catch(const EConvertError &e) 5 E* a2 x' S! H: m
{
& }1 f U8 w c6 `) y ShowMessage("not a int ot double"); ) \4 ^& N h9 N+ D
} ; v" Q2 x; f1 Q1 @7 l
9 c, m C# D$ i$ G8 a4 H上面的代码已通过调试 |