木游殇 发表于 2013-2-3 22:52:23

关于Edit组件内容判断的问题

请问,Edit组件里的字符串怎么判断他是一个数组而不是字符。比如要计算23和24相加结果,但是如果输入ee就会报错。怎么排除这种异常,对他进行处理。

永远前进的人 发表于 2013-2-3 22:52:24

好像是放到数组里面对应到字符串,然后进行判断。

メ㊣逆ご帅☆ 发表于 2013-2-4 02:04:34

本帖最后由 メ㊣逆ご帅☆ 于 2013-2-4 11:54 编辑

数组是指输入不只一个,字符是指输入一个是吗?
如果用的是VC的话就用strlen取长度就知道了
记得包含string.h

计算23和24相加结果,但是如果输入ee就会报错。怎么排除这种异常,对他进行处理。
根据是Unicode或者Ascii进行判断
一般是Ascii
那么拿ascii举例

十进制 十六进制
48    │30      │0   │      │
49    │31      │1   │      │
50    │32      │2   │      │
51    │33      │3   │      │
52    │34      │4   │      │
53    │35      │5   │      │
54    │36      │6   │      │
55    │37      │7   │      │
56    │38      │8   │      │
57    │39      │9   │      │
这是字符0-9对应ascii的值
你只要取出字符,一个一个进行取出来放一个变量里,判断值是否在48到57之间,不在
那么不是数字,弹个提醒就可以

或者就是挂个键盘钩子实时判断是不是输入了字母或其他,有就提醒。




2013年2月4日11:50:36
抱歉,翻看了一个Delphi程序,发现Delphi一般默认就是采用ascii进行处理的
具体看这里

如图,这是Delphi一个数字的字符串

用工具转化下发现字符串32770 对应的 33h 32h 37h 37h 30h就是ascii
也就是说Delphi默认使用ascii

我顺便用OD找了一些其他字符串,发现都是ascii,那么应该可以用上面的方法了

另一个方法就是
你可以在代码中找到KeyPress 事件
我给你注释下好了
if not((key in ['0'..'9',#8]) ) then   //如果按下的按钮 不 在0-9之间
    begin
         showmessage ('不是数字');//这句完全可以注释掉
         key := #0;//应该是让它按下的那个键无效化,也就是输入不了不是数字的
    end;

如果没有KeyPress事件的话
DELPHI应该是在那个Events事件中添加KeyPress事件就对了
如果连KeyPress都汉化了的话。。。那么应该就是 按键按下 这个事件了



永远前进的人 发表于 2013-2-4 09:46:50

メ㊣逆ご帅☆ 发表于 2013-2-4 02:04 static/image/common/back.gif
数组是指输入不只一个,字符是指输入一个是吗?
如果用的是VC的话就用strlen取长度就知道了
记得包含stri ...

但是他好像是在Delphi里面啊。以后看清哦

木游殇 发表于 2013-2-4 22:32:48

永远前进的人 发表于 2013-2-3 22:52 static/image/common/back.gif
好像是放到数组里面对应到字符串,然后进行判断。

一句点明不错
页: [1]
查看完整版本: 关于Edit组件内容判断的问题