|
2 W7 r% v! E% J5 ~" }3 k7 W
在onKeyPress事件中作一些处理
; N& L( ?: _. b6 \ G0 `使得输入只能是数字和一个小数点
D( z* }" }. f : R, Z1 ]5 b$ X1 L5 E, j
然后设置相应的标志。 2 I4 Q2 S1 C3 ^6 F! u( H% J
+ T1 n3 Y$ h M7 e当然,还有另外的办法,就是用pos函数来查找是否有小数点
% ^: T& A( R) Y$ ?9 e- T: M如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 6 K" d/ ?" E0 o
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 " G1 H7 _4 u/ }3 X* i6 H
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
L; Q/ |7 x7 c# }! L U: g2 y7 Z ; p1 Z# n( X, ~( J& A( z# [
于是,还有第三个办法,用好Exception
/ J3 T( g3 R3 g3 `: B首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
h% c+ _' b3 qEdit1->Text.ToDouble,如果不产生异常,那么是小数,反之 * G, ?# \! [' g2 z* C B
就表明不是合法的数字
) J' h: A3 |! Q3 A. e- X& J/ ~这个办法最方便。大概的程序代码如下 3 A& e/ g) H6 Q$ B
* d; |6 p0 S5 K5 N
try
5 ]- d1 K' J Y( C$ N) \& X { , X! ~5 g& H. j* s- G8 e. z
Edit1->Text.ToDouble();
. e; X$ d) }; n) b9 b try 2 Z+ f7 ?2 B/ F) I+ o: H
{
# F4 X& {6 N- [( c. H5 D% p w Edit1->Text.ToInt();
4 B8 P' b2 Q) u. s! M- {2 H ShowMessage("is a int"); 0 u( V6 Y: X# v
} 4 n' q( _ `+ w7 d& x
catch(const EConvertError &e)
+ R" M# O3 R! W$ u# n {
' `! R, {! p; o7 T- t ShowMessage("is a double"); 7 w5 j* P4 p$ H1 s4 R# L
}
7 d) h& S# ^2 f$ Z) P( R, G } % k4 U) |, }* R1 ^$ A+ V1 |" k
catch(const EConvertError &e)
Y) K( g% E+ ^1 l {
: d3 D- a- ~: O- ?" F ShowMessage("not a int ot double");
4 v1 A. Y6 J& c3 {4 a+ h }
* Q$ V( o" S1 r) h, q( a3 N 5 B1 Y: ?! ?8 Q5 f3 ~& y
上面的代码已通过调试 |