|
9 I. [' m: u$ }, s
在onKeyPress事件中作一些处理 4 o7 C) U0 L7 j' @
使得输入只能是数字和一个小数点 4 y/ v4 o) q. p5 ?% m
2 q7 T# w1 F8 T+ q
然后设置相应的标志。 3 _, A" ~3 d1 Y
* ?" p3 V; g" P" S当然,还有另外的办法,就是用pos函数来查找是否有小数点 7 P4 q1 b9 X6 x, Y# l! D) d, `# `
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
# [9 ^3 E H2 m就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 ! s9 F) {3 o$ c, ]4 b
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 * s2 g- @# l3 d# r$ e5 ~
0 k5 H6 t! o: ]: p7 s+ a于是,还有第三个办法,用好Exception
, A, H, w7 @% n' N9 t+ ]首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
5 n" X4 h( |9 P" ?Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 7 V8 E6 [$ F5 K T1 l
就表明不是合法的数字 % l' f( M: r- {6 ?0 q% S3 z
这个办法最方便。大概的程序代码如下 & Z; G* c" J2 b9 {
2 Z- l. a G# o7 E# c try
; s, l6 v$ J% ^7 }6 A {
; O+ Q2 }4 \4 T9 C4 P" @6 p$ G Edit1->Text.ToDouble();
4 g. q. R4 ?3 b3 H; S try
3 }! S9 ]: Z# T6 q% x( o {
0 M: v/ S8 X6 p, e' Y* ^9 @1 d! q Edit1->Text.ToInt(); $ I/ Z4 J- }+ R! z0 C2 y
ShowMessage("is a int"); " t1 x3 @! x; ~$ p2 V/ l* {+ u
}
- N; j0 R: b% @0 p: p catch(const EConvertError &e) ) O, I1 E% C9 @, f+ w4 W3 N
{
9 J( [$ S* E8 c0 I( Z ShowMessage("is a double");
( }( i9 E$ E7 X* R }
$ @" p3 t) Q4 j# M/ Y b }$ R }
' C. l/ b( R2 Q4 a0 i7 j) z1 B. u& B catch(const EConvertError &e)
5 e$ c& k! z& i5 z. Y, `) C( I5 k { 2 u3 q6 U5 a' R, k7 w
ShowMessage("not a int ot double"); S# X" S4 Q. y" i3 P: F
} 9 Y% X4 h0 E/ m j2 f, u) C+ Y4 {
2 V3 j2 y& n1 I) q
上面的代码已通过调试 |