|
$ s. C7 C( r0 I: N% [4 H在onKeyPress事件中作一些处理 ( X" M7 C# C( B* a7 x. j
使得输入只能是数字和一个小数点
- w. q/ W7 c" U. c5 z1 q u
4 L9 T5 v/ b: |' k, ? f然后设置相应的标志。 8 b) c$ u; A% r* @: z
, ]: ]" X( ]' [1 X% i2 |6 }4 q+ l8 F当然,还有另外的办法,就是用pos函数来查找是否有小数点 ( y8 x7 r* G( @' E6 F3 h) b/ _
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
' p8 i. Q8 g' A就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
( \- q* M! m: g V q% g% V此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 0 a7 ^9 S# G o3 c3 k
7 N+ V* e3 k. \2 x! V0 Z+ {
于是,还有第三个办法,用好Exception
5 `8 V% A- _& K- h, ]首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
# L% N" I+ i- e% ~0 P9 h+ HEdit1->Text.ToDouble,如果不产生异常,那么是小数,反之
0 X" m A' @2 K: [6 _就表明不是合法的数字 1 V4 R1 T; p# A% o1 k6 C' D0 @ C
这个办法最方便。大概的程序代码如下
5 m( E" F8 E$ b( {
' ~2 ^8 _- \6 j9 D. r! g. ? try
1 b; _. {6 h5 [/ z. X {
% x0 E; a9 n$ B: F6 k Edit1->Text.ToDouble(); . T. G* N4 E4 Y
try ( f+ v" Q+ W/ ], H6 k# J: m# B# W5 n
{
+ w2 c3 q$ x2 ~ s* n( K Edit1->Text.ToInt(); 7 W+ [7 }4 G1 O8 V" d
ShowMessage("is a int"); . Y1 a: M" s# ]& ~- W, k
}
/ S+ x# L3 j: {+ t& l1 n catch(const EConvertError &e)
# I) b0 M% k) j- l% K. J { 7 z2 {% j% W7 A# D$ o
ShowMessage("is a double");
% Q6 O1 `" J6 O } . W' L) W; w9 ~7 c- r7 j0 P
}
9 L' ?4 A" O, |* L W1 R4 ~+ y: k2 C catch(const EConvertError &e) 1 |' ^; A+ Q( X8 S
{ 9 D% g% k7 p# Z D, O
ShowMessage("not a int ot double"); 7 u; T/ `/ {/ n1 o
}
4 T2 M3 G% ?( T. N# S5 R 4 b$ R( s* f& z, G& P! z* l
上面的代码已通过调试 |