|
7 X7 P' c/ d& v+ O5 E7 W. h
在onKeyPress事件中作一些处理
* r" M. x6 a! j; W% j" c使得输入只能是数字和一个小数点 & w3 J; a; D% N Y: [. s; i' p
2 D3 w6 L/ R' y$ g9 j5 M
然后设置相应的标志。
- f, D" i% A2 Y; d3 N) A$ \ $ S8 l' O' N6 S( S" m; G/ S
当然,还有另外的办法,就是用pos函数来查找是否有小数点 $ R* X4 @. r6 e
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
( P1 T6 D4 q: n就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
* a; S; T# h2 | y0 ]1 `/ V此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
% X$ p* @6 v- @
2 _1 f" _3 A% t9 A于是,还有第三个办法,用好Exception
: S/ C% R: O& [ t- s首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
y! P( r; [3 B- d/ u, ]Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
& {1 h' p+ J; M/ t就表明不是合法的数字
_# J& k% Z1 X( S1 u这个办法最方便。大概的程序代码如下
+ g, e3 n: I5 K
. \5 r' [8 D. y* o. k+ Z: I6 ? try
' J+ _+ H9 H# u J {
: Z# W& D+ t! q- @6 n( \. X Edit1->Text.ToDouble();
7 u1 @/ ~- ~7 m8 T$ F( Q4 j$ o try
$ v& E3 @7 _+ j, D) K0 y {
# v0 D' k' B6 \% r: N% _" Q2 I Edit1->Text.ToInt();
, b* ?' X2 p* o+ g9 } ShowMessage("is a int"); + V- ^2 I: [+ Z6 r
}
2 c9 h6 `' Q6 L/ D catch(const EConvertError &e) 6 D' V# Y+ m! k0 }. E- Y
{ ' z3 v7 H; Z4 U1 g. x
ShowMessage("is a double"); ( F3 c% C5 z* x$ g. T1 a4 B7 W
} $ R: f$ _ r9 G. Z% [' F/ A" \4 [( S
} $ [1 N! n% G( |
catch(const EConvertError &e)
8 x" k% ]5 v, E! ] { 5 l+ A3 d, V1 x' G
ShowMessage("not a int ot double");
8 y/ w* {( n' [' c% \ }
q- W. F: C ?; f7 v; ~: G! f4 J
4 e' n; i) R5 m. [( Z$ I+ l. Y3 n上面的代码已通过调试 |