|
# b- p7 k; |& y3 N0 K( H在onKeyPress事件中作一些处理
* A( i' n0 {6 J3 Y* e. v( a使得输入只能是数字和一个小数点 : G/ [6 w& ?# G/ T6 w/ k+ ?
9 p( }6 K, W+ l+ W然后设置相应的标志。 , I2 a8 f( v5 U9 D# c
X) h; P! t0 U3 Z, L, T当然,还有另外的办法,就是用pos函数来查找是否有小数点 : ^/ J* U$ ~" G L# J
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 1 L, U8 h' t+ j. Z$ i4 C; R+ V
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
3 O$ n. O9 ^1 @- m此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
3 y' T* T9 m* G. ]4 g" o* i
# a) g3 @" Q3 q# \ d4 X8 F于是,还有第三个办法,用好Exception # L6 @. `" q2 j# E& ]8 b, h/ ~
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 9 l# D) b3 J! U5 [8 s9 ?( |
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
, y5 V' x& ~' H; a& ]8 J就表明不是合法的数字
7 e9 _/ u; [8 j, o& V这个办法最方便。大概的程序代码如下
4 m- j( g2 {7 a* b/ t+ \4 \; `/ t4 i
( Z6 f, O* k$ x5 A3 q# Y try 8 Y2 n* Q: ^ m' m- ?, m0 I
{ 3 Y3 M1 K. @( E- P- A9 J7 }& R+ Z
Edit1->Text.ToDouble();
8 |! E$ d( b0 I3 q+ s2 K2 ~3 j. D: M try 7 v9 T) R4 E% u s- ^
{ " c* y; h- E T/ [* {, O
Edit1->Text.ToInt();
- l1 @6 V6 A* R ShowMessage("is a int");
% P' P5 l+ S4 g# @# T& g: W0 ] } 2 n& L8 g" W. Q1 w4 S5 \+ b) i4 Z
catch(const EConvertError &e)
5 x, s/ B8 h7 w9 ?9 N5 K1 y { * |" p9 k( S+ j0 @4 o3 O' S! ?# a, x
ShowMessage("is a double");
: ?4 A( y. W Q3 U) a } / d5 G9 i# q8 O. V- `, ]
}
; ]8 J" \& T' T8 T catch(const EConvertError &e)
P. K% p0 K, W* {9 e( m" {; r {
- a$ n8 R. g/ @9 Q9 e ShowMessage("not a int ot double"); " Y$ b+ Q5 d" |. F) Y
} % K' k+ _- Q X: L8 d6 N
- o- ?6 j& I. s4 d. x, ^上面的代码已通过调试 |