关于输入框可输入字符的限定小结

         程序开发中经常会遇到输入限制问题,比如限制只能输入整数、只能输入大写字母、只能输入小写字母、只能输入特殊字符等等问题。 本人希望通过全面的总结和实例,来详细介绍解决的方法和思路。

         最好的限制方法不是输入完毕点击确认的时候来检查,那样很难来做准确的判断和检查,不过对于检查E-mail的合法性,那样做是合适的。一般来说,对于类似Edit类型的输入框的检查方法就是通过OnKeyPress事件,根据按键的ASCII码来判断检查。大致总结如下:

         如果想检查是否是字母,比如大写字母,我们知道大写字母的ASCII值范围是[65..90],因此事件中可以这样写:

         if  not ( Ord(Key) in [65..90] ) then   //如果按键不是大写字母
             Key :=#0;                                      //输入空字符,即什么也不输入

         完整的代码如下:
        procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
        begin
             if  not ( Ord(Key) in [65..90] ) then   //如果按键不是大写字母
                 Key :=#0;                                    //输入空字符,即什么也不输入
        end;


         既然字母这么容易检查,那么其他的就很简单,就是把Key值限定在特定的ASCII范围内即可。下面给出ASCII码对照表,以及一些范围说明:
 

ASCII 码对照表
    ASCII, American Standard Code for Information Interchange 念起来像是 " 阿斯 key" ,定义从 0 127 的一百二十八个数字所代表的英文字母或一样的结果与意义。由于只使用 7 个位元 (bit) 就可以表示从 0 127 的数字,大部分的电脑都使用 8 个位元来存取字元集 (character set) ,所以从 128 255 之间的数字可以用来代表另一组一百二十八个符号,称为 extended ASCII
ASCII
键盘
ASCII
键盘
ASCII
键盘
ASCII
键盘
27
ESC
32
SPACE
33
!
34
"
35
#
36
$
37
%
38
&
39
'
40
(
41
)
42
*
43
+
44
'
45
-
46
.
47
/
48
0
49
1
50
2
51
3
52
4
53
5
54
6
55
7
56
8
57
9
58
:
59
;
60
<
61
=
62
>
63
?
64
@
65
A
66
B
67
C
68
D
69
E
70
F
71
G
72
H
73
I
74
J
75
K
76
L
77
M
78
N
79
O
80
P
81
Q
82
R
83
S
84
T
85
U
86
V
87
W
88
X
89
Y
90
Z
91
[
92
/
93
]
94
^
95
_
96
`
97
a
98
b
99
c
100
d
101
e
102
f
103
g
104
h
105
i
106
j
107
k
108
l
109
m
110
n
111
o
112
p
113
q
114
r
115
s
116
t
117
u
118
v
119
w
120
x
121
y
122
z
123
{
124
|
125
}
126
~

         
         目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。

         因为1位二进制数可以表示(21=)2种状态:0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位 ASCII码是用七位二进制数进行编码的,可以表示128个字符。 

        第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;

        第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。 

        注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值