QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

7 X7 P' c/ d& v+ O5 E7 W. h

在onKeyPress事件中作一些处理

* r" M. x6 a! j; W% j" c

使得输入只能是数字和一个小数点

& w3 J; a; D% N Y: [. s; i' p

2 D3 w6 L/ R' y$ g9 j5 M

然后设置相应的标志。

- f, D" i% A2 Y; d3 N) A$ \

$ S8 l' O' N6 S( S" m; G/ S

当然,还有另外的办法,就是用pos函数来查找是否有小数点

$ R* X4 @. r6 e

如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷

( P1 T6 D4 q: n

就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。

* a; S; T# h2 | y0 ]1 `/ V

此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。

% X$ p* @6 v- @

2 _1 f" _3 A% t9 A

于是,还有第三个办法,用好Exception

: S/ C% R: O& [ t- s

首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用

y! P( r; [3 B- d/ u, ]

Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之

& {1 h' p+ J; M/ t

就表明不是合法的数字

_# J& k% Z1 X( S1 u

这个办法最方便。大概的程序代码如下

+ g, e3 n: I5 K

. \5 r' [8 D. y* o. k+ Z: I6 ?

try

' J+ _+ H9 H# u J

{

: Z# W& D+ t! q- @6 n( \. X

Edit1->Text.ToDouble();

7 u1 @/ ~- ~7 m8 T$ F( Q4 j$ o

try

$ v& E3 @7 _+ j, D) K0 y

{

# v0 D' k' B6 \% r: N% _" Q2 I

Edit1->Text.ToInt();

, b* ?' X2 p* o+ g9 }

ShowMessage("is a int");

+ V- ^2 I: [+ Z6 r

}

2 c9 h6 `' Q6 L/ D

catch(const EConvertError &e)

6 D' V# Y+ m! k0 }. E- Y

{

' z3 v7 H; Z4 U1 g. x

ShowMessage("is a double");

( F3 c% C5 z* x$ g. T1 a4 B7 W

}

$ R: f$ _ r9 G. Z% [' F/ A" \4 [( S

}

$ [1 N! n% G( |

catch(const EConvertError &e)

8 x" k% ]5 v, E! ]

{

5 l+ A3 d, V1 x' G

ShowMessage("not a int ot double");

8 y/ w* {( n' [' c% \

}

q- W. F: C ?; f7 v; ~: G! f4 J

4 e' n; i) R5 m. [( Z$ I+ l. Y3 n

上面的代码已通过调试

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-10-17 09:03 , Processed in 1.393265 second(s), 52 queries .

回顶部