QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3192|回复: 0
打印 上一主题 下一主题

判断EDIT框输入的是否为数字

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

$ 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+ H

Edit1->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

上面的代码已通过调试

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-11 15:14 , Processed in 0.432432 second(s), 51 queries .

回顶部