|
. L0 [1 Z5 z0 |' ]( C. q1 O. ?8 ~
在onKeyPress事件中作一些处理
6 F; R9 f! r% ]4 g }/ a使得输入只能是数字和一个小数点 2 H- X- P, c2 ~) v, G- C6 Z9 `, S, `
, V- P3 L& P5 D1 U7 \然后设置相应的标志。
4 t1 @) |# N2 a b+ ?) t9 i; q6 l7 a
& L, D( H1 l$ i. l5 [" H8 M当然,还有另外的办法,就是用pos函数来查找是否有小数点
- x9 q6 d% ~$ e如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 % l! Z; T' u Z3 \+ O
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
. l4 E5 L3 |) T* ?4 d0 C# m此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
. W, A8 F0 G; P- {
2 d5 s5 l1 H7 K: ]于是,还有第三个办法,用好Exception ! [6 L. d4 q3 D9 o Y& N y
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 * c E B' q' Z8 C- K, \. h
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 , Y x m& J, K1 M& {0 a% e
就表明不是合法的数字
8 [ C) j" U$ \7 L0 F) ]0 R* N$ m这个办法最方便。大概的程序代码如下 7 ^6 w# P+ [5 K
- g- o4 t: w" N" l
try % g: L% N f6 j8 c# Y. V y
{ % }$ p9 e' _& B4 G0 y; F, B1 E
Edit1->Text.ToDouble(); 3 n, [: R4 w. R* T* c& y
try @: U7 u0 P D7 l
{
! I9 ^- f' A6 ]: z0 G! L0 H9 {4 ~ Edit1->Text.ToInt(); % ?0 ?9 S1 x. p7 }9 S2 x3 q; c4 V
ShowMessage("is a int");
9 P) r# s$ g9 P }
0 J- k; n4 S4 D) i5 B catch(const EConvertError &e)
; [1 d# F. S; d2 `) z2 ? { - b+ G$ c/ [) [" W k1 r+ y
ShowMessage("is a double"); " ~6 R7 o, B* T# j) r( m6 Q
} # O$ T. y" v- E
}
6 j3 b2 N( C7 e) z, O# b$ P catch(const EConvertError &e)
* M% O: O p6 e# Z* z: D$ Z { 6 U2 m' U+ s% _
ShowMessage("not a int ot double");
$ q+ u& G3 h8 ] }
. `* ^& Z5 R) H + I* L! y* E E E3 ~9 A
上面的代码已通过调试 |