程序开发中经常会遇到输入限制问题,比如限制只能输入整数、只能输入大写字母、只能输入小写字母、只能输入特殊字符等等问题。 本人希望通过全面的总结和实例,来详细介绍解决的方法和思路。
最好的限制方法不是输入完毕点击确认的时候来检查,那样很难来做准确的判断和检查,不过对于检查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, 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。