關於輸入框可輸入字符的限定小結

         程序開發中經常會遇到輸入限制問題,比如限制只能輸入整數、只能輸入大寫字母、只能輸入小寫字母、只能輸入特殊字符等等問題。 本人希望通過全面的總結和實例,來詳細介紹解決的方法和思路。

         最好的限制方法不是輸入完畢點擊確認的時候來檢查,那樣很難來做準確的判斷和檢查,不過對於檢查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)就可以表示從0127的數字,大部分的電腦都使用8個位元來存取字元集(character set),所以從128255之間的數字可以用來代表另一組一百二十八個符號,稱爲 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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章