身份證號碼常常被拿來當作是檢驗身份的項目之一,
雖然現在有所謂的身份證號碼產生器,所以用身份證號碼
來檢測身份的確是沒啥用,但我們也要了解一下,如何檢測身
份證號碼是否正確呢?
傳入身份證號碼 C (10)
若正確,傳回 .T. ,否則傳回 .F.
* 檢查身份証號碼
Function checkid
Lpara m.id
Local i,rvalue,Sum
Dimension wvalue[10]
rvalue=.F.
If Len(Alltrim(m.id))=10
wvalue[1]=1
wvalue[2]=9
wvalue[3]=8
wvalue[4]=7
wvalue[5]=6
wvalue[6]=5
wvalue[7]=4
wvalue[8]=3
wvalue[9]=2
wvalue[10]=1
tmp=Upper(Left(m.id,1))
Do Case
Case Between(tmp,"A","H")
m.id=Alltrim(Str(Asc(Upper(Left(m.id,1)))-55))+Right(m.id,9)
Case Between(tmp,"J","N")
m.id=Alltrim(Str(Asc(Upper(Left(m.id,1)))-56))+Right(m.id,9)
Case Between(tmp,"P","V")
m.id=Alltrim(Str(Asc(Upper(Left(m.id,1)))-57))+Right(m.id,9)
Case Between(tmp,"X","Y")
m.id=Alltrim(Str(Asc(Upper(Left(m.id,1)))-58))+Right(m.id,9)
Endcase
Sum=0
For i=1 To 10
Sum = Sum + Val(Substr(m.id,i,1))*wvalue[i]
Endfor
If Substr(m.id,11,1) = Right(Str(10-Mod(Sum,10)),1)
rvalue=.T.
Endif
Endif
Return rvalue
Endfunc
發表於 2006/03/30 09:26 AM
沒有留言:
張貼留言