程序開發中經常會遇到輸入限制問題,比如限制只能輸入整數、只能輸入大寫字母、只能輸入小寫字母、只能輸入特殊字符等等問題。 本人希望通過全面的總結和實例,來詳細介紹解決的方法和思路。
最好的限制方法不是輸入完畢點擊確認的時候來檢查,那樣很難來做準確的判斷和檢查,不過對於檢查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。