´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...

|
|
|
Visitors - Session views |       
7 ¸Ñ¹ÇÒ¤Á ¾.È.2549 108 Users On-Line. |
|
Visitors - Page views |        1 ¡ØÁÀҾѹ¸ì ¾.È.2551 |
|
|
|
 |
|
ᨡ¿ÃÕâ¤é´ VB6 ¡Ñº¡ÒäӹdzËÒËÅÑ¡·Õè 15 ËÃ×Í Check Digit ¢Í§ IMEI |
Category »
VB 6/VB.Net â´Â : Webmaster àÁ×èÍ 29/12/2554 àÇÅÒ: 15:09 | (ÍèÒ¹ : 23939) |
¼ÁäÁèä´éÁÒ¡ÅèÒǶ֧¡Ã³Õ¤´ÕÍÕÁÕè (IMEI) áµè»ÃСÒÃã´¹èФÃѺ áµè¨ÐÁÒÊÒ¸ÂÒÂã¹àÃ×èͧÇÔªÒ¡ÒôéÒ¹¡ÒÃâ»Ãá¡ÃÁÁÔè§ ¶Ö§ÇÔ¸Õ¡ÒÃËÒ¤èÒËÅÑ¡·Õè 15 ¢Í§ÍÕÁÕè «Öè§à»ç¹ËÅÑ¡µÃǨÊͺ¤ÇÒÁ¶Ù¡µéͧ¢Í§ 14 ËÅÑ¡áá (¡ÅØèÁ Mobile Phone) ... ¡ÒÃÁÕËÅÑ¡µÃǨÊͺ ËÃ×Í Check Digit ÁѹäÁèä´é¹ÓÁÒãªé੾ÒÐàÃ×èͧ¢Í§â·ÃÈѾ·ìà·èÒ¹Ñé¹ Âѧãªé¡ÑºÃËÑʺÒÃìâ¤é´ÊÔ¹¤éÒ ºÒÃìâ¤é´µÒÁãºá¨é§Ë¹ÕéàÍ ËÃ×ͺѵûÃЪҪ¹«Ö觨ÐÁÕËÅÑ¡·Õè 13 à»ç¹ËÅÑ¡µÃǨÊͺ (ÍèÒ¹ÃÒÂÅÐàÍÕ´ä´é ... ·Õè¹Õè) ÏÅÏ ... ¶ÒÁÇèÒ·ÓäÁ¶Ö§µéͧÁÕ Check Digit ¡çà¾ÃÒÐà¾×è͵ÃǨÊͺ¤ÇÒÁ¶Ù¡µéͧ ËÃ×Í»éͧ¡Ñ¹¤ÇÒÁ¼Ô´¾ÅÒ´¨Ò¡¡Òûé͹¢éÍÁÙŹÑè¹àͧ «Öè§ÇÔ¸Õ¡ÒÃËÒ Check Digit ¢Í§áµèÅзÕè áµèÅЧҹÁѹ¡ç¨ÐᵡµèÒ§¡Ñ¹ÍÍ¡ä» ... ÊÓËÃѺ⨷Âì(§èÒÂæ)¢é͹ÕéàÃÕ¡ä´éÇèÒÁѹÁÕ¤ÇÒÁ¹èÒʹã¨ÍÂÙèäÁè¹éÍÂàÅ·Õà´ÕÂÇ ÁѹàËç¹ÀÒ¾¢Í§¡ÒäԴÇÔà¤ÃÒÐËì⨷ÂìÍÍ¡ÁÒä´é´éÇÂÁ×Í áµè¡ÒèÐà¢Õ¹à»ç¹â»Ãá¡ÃÁ¢Öé¹ÁÒ¹Ñ鹡ÅѺäÁèä´é§èÒÂÊÓËÃѺËÅÒÂæ¤¹àŤÃѺ ... ¾Õè¹éͧ |
 |
¡ÒäԴÇÔà¤ÃÒÐËì⨷Âì

ÇÔ¸Õ¡ÒÃËÒËÅÑ¡·Õè 15 ¢Í§ IMEI ¨Ò¡ 14 ËÅÑ¡áá (â´ÂᡤԴà»ç¹ËÅÑ¡¤Õè áÅÐ ËÅÑ¡¤Ùè)
- ¡Ã³Õ·Õèà»ç¹ËÅÑ¡¤Õè (ËÅÑ¡·Õè 1, 3, 5, 7, 9, 11, 13) ãËé¹Ó¤èÒã¹áµèÅÐËÅÑ¡¢Í§ËÅÑ¡¤ÕèÁҺǡ¡Ñ¹ä»àÅÂ
µÑÇÍÂèÒ§
- ËÅÑ¡·Õè 1 ¤×Í 3
- ËÅÑ¡·Õè 3 ¤×Í 8
- ËÅÑ¡·Õè 5 ¤×Í 3
- ËÅÑ¡·Õè 7 ¤×Í 0
- ËÅÑ¡·Õè 9 ¤×Í 8
- ËÅÑ¡·Õè 11 ¤×Í 3
- ËÅÑ¡·Õè 13 ¤×Í 9
¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè¤×Í 34
- ¡Ã³Õ·Õèà»ç¹ËÅÑ¡¤Ùè (ËÅÑ¡·Õè 2, 4, 6, 8, 10, 12, 14) ¨Ðµéͧ¹Ó¤èÒã¹áµèÅÐËÅÑ¡ÁÒ¤Ù³´éÇ 2 ¡è͹ â´ÂÁÕà§×è͹ä¢à¾ÔèÁ´Ñ§¹Õé
- ËÒ¡¤èÒã¹ËÅÑ¡¤ÙèÁÒ¤Ù³´éÇ 2 áÅéÇä´é¤ÓµÍºà»ç¹àÅ¢ËÅÑ¡à´ÕÂÇ ¡ç¹Ó仺ǡ¡ÑºËÅÑ¡¤ÙèÍ×è¹æä´éàÅÂ
- ËÒ¡¤èÒã¹ËÅÑ¡¤ÙèÁÒ¤Ù³´éÇ 2 áÅéÇä´é¤ÓµÍºà»ç¹àÅ¢ 2 ËÅÑ¡ ¨Ðµéͧá¡àÅ¢ 2 ËÅÑ¡¹ÕéÍÍ¡ÁҺǡ¡Ñ¹¡è͹ áÅéǤè͹Ó仺ǡ¡ÑºËÅÑ¡¤ÙèÍ×è¹æ
µÑÇÍÂèÒ§
- ËÅÑ¡·Õè 2 ¤×Í 5 --> 5 x 2 = 10 --> (1 + 0) = 1
- ËÅÑ¡·Õè 4 ¤×Í 4 --> 4 x 2 = 8
- ËÅÑ¡·Õè 6 ¤×Í 9 --> 9 x 2 = 18 --> (1 + 8) = 9
- ËÅÑ¡·Õè 8 ¤×Í 4 --> 4 x 2 = 8
- ËÅÑ¡·Õè 10 ¤×Í 6 --> 6 x 2 = 12 --> (1 + 2) = 3
- ËÅÑ¡·Õè 12 ¤×Í 2 --> 2 x 2 = 4
- ËÅÑ¡·Õè 14 ¤×Í 7 --> 7 x 2 = 14 --> (1 + 4) = 5
¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè¤×Í 38
- ãËé¹Ó¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè áÅÐ ¼ÅÃÇÁËÅÑ¡¤Ùè ÁҺǡ¡Ñ¹ ¹Ñ蹤×Í 34 + 38 = 72
- ¢Ñé¹µÍ¹ÊØ´·éÒ ¤×Í ¡ÒÃËÒËÅÑ¡·Õè 15
¨ÐÁÕÇÔ¸Õ¡ÒäԴ´Ñ§¹Õé
- ËÒ¡¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè+ËÅÑ¡¤Ùèŧ·éÒ´éǤèÒ 0 àªè¹ 70 ¡çãËé¶×ÍÇèÒ¤èÒ 0 ¹Õéà»ç¹¤ÓµÍº (Check Digit ËÅÑ¡·Õè 15)
- ËÒ¡äÁèãªè µéͧàÅ×è͹ä»ËÒ¤èÒ·Õèŧ·éÒ´éÇ 0 ¶Ñ´ä» â´Â¤èÒ·ÕèÍÂÙèËèÒ§Í͡仨ҡ¼ÅÃÇÁËÅÑ¡¤Õè+ËÅÑ¡¤Ùè¹Ñ鹨Ðà»ç¹¤ÓµÍº àªè¹
¼ÅÅѾ¸ìä´é 55 ¤èÒ·Õè¨Ðŧ·éÒ´éÇ 0 ¶Ñ´ä»¤×Í 60 ´Ñ§¹Ñé¹àÍÒ 60 - 55 ¨Ðä´é¤ÓµÍº¤×Í 5 ¼ÅÅѾ¸ìä´é 67 ¤èÒ·Õè¨Ðŧ·éÒ´éÇ 0 ¶Ñ´ä»¤×Í 70 ´Ñ§¹Ñé¹àÍÒ 70 - 67 ¨Ðä´é¤ÓµÍº¤×Í 3 ã¹µÑÇÍÂèÒ§¹Õé ¤×Í 80 - 72 ¨Ðä´é¤ÓµÍº¤×Í 8
|
¤ÓÇèÒàŢ㹷Õè¹Õé ¤×Í àÅ¢¨Ó¹Ç¹àµçÁºÇ¡¹èФÃѺ ¡è͹·Õè¨Ð͸ԺÒÂàÃ×èͧ¡ÒäԴ·Õè¨Ðà¢Õ¹â»Ãá¡ÃÁ ¼Á¢Í¡ÅèÒǾҴ¾Ô§ä»ÂѧÊÁÑ»ÃжÁ«èСè͹¹èФÃѺ·èÒ¹»Ãиҹ·Õèà¤Òþ àÃÒ·Ø¡¤¹¤§à¤ÂàÃÕ¹àÃ×èͧ¡ÒÃËÒáѹÁÒáÅéÇ àÇÅÒ·ÕèàÃÒËÒÃàÅ¢¨Ó¹Ç¹àµçÁã´æÁѹ¡ç¨ÐÁÕ·Ñ駤ӵͺáÅÐàÈÉ (ËÒÃŧµÑÇàÈÉ¡çà»ç¹ 0 ÅèФÃѺ¾Õè¹éͧ) àªè¹ 25 / 2 ä´é¤ÓµÍº 12 àÈÉ 1 ËÃ×Í 33 / 3 ä´é¤ÓµÍº 11 àÈÉ 0 ... ã¹´éÒ¹â»Ãá¡ÃÁÁÔè§ÊÓËÃѺÀÒÉÒÃдѺÊÙ§ Áѹ¡ç¨ÐÁÒËÒÃẺ¹ÕéäÁèä´é áµèÁѹÊÒÁÒöËÒÃá¡ÊèǹÍÍ¡¨Ò¡¡Ñ¹ä´é â´ÂãªéâÍà»ÍÃìàÃàµÍÃì 2 µÑÇ ¤×Í (à¤Ã×èͧËÁÒÂÊÓËÃѺ Visual Basic ¹èФÃѺ ... ¾Õè¹éͧ)
\ (´Ô¿) ¤×Í ¡ÒÃËÒÃẺµÑ´àÈÉ àªè¹ 25 \ 2 ä´é¤ÓµÍº¤×Í 12 à·èÒ¹Ñé¹ à¾ÃÒеѴàÈÉÍÍ¡ä»
Mod (ÁçÍ´) ¤×Í ¡ÒÃËÒÃẺàÍÒàÈÉ àªè¹ 25 Mod 2 ä´é¤ÓµÍº¤×Í 1 ¼Á¨Ð¡ÅèÒǶ֧¤ÇÒÁ¹èÒÍÑȨÃÃÂì㨢ͧ Mod ¹Ñ蹤×Í ¤èҨӹǹàµçÁã´æ·Õè¹Óä» Mod (à»ç¹µÑÇËÒÃàÍÒàÈÉ) ¹Ñé¹ ¨Ðä´é¤èÒµèÓÊØ´¤×Í 0 áÅÐ ¤èÒÊÙ§ÊØ´ ¤×Í ¤èÒ·Õè¹Óä» Mod - 1 àÊÁÍ àªè¹
Mod 2 ¤ÓµÍº¨Ðä´é 0, 1
Mod 8 ¤ÓµÍº¨Ðä´é 0, 1, 2, 3, 4, 5, 6, 7
Mod 10 ¤ÓµÍº¨Ðä´é 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
ÁÒ´Ù¡ÒÃá¡é»ÑËÒã¹áµèÅТéÍ
- àÃÒ¨ÐÃÙéä´éÍÂèÒ§äÃÇèÒ ËÅÑ¡µèÒ§æµÒÁ⨷Âì·ÕèµÑé§äÇéÍѹä˹Áѹà»ç¹ËÅÑ¡¤Ùè ËÃ×Í ËÅÑ¡¤Õè (ºÒ§¤¹ÍÒ¨¨Ð¹Ö¡¶Ö§¡ÒÃǹÅÙ» 2 ¤ÃÑé§ á¡àÍÒËÅÑ¡¤Ùè ËÅÑ¡¤Õèá·¹) ... ¢Í¾Ò´¾Ô§ä»ÊÁÑ»ÃжÁÍÕ¡áÅéǤÃѺ·èÒ¹»Ãиҹ 55555+ àÅ¢¨Ó¹Ç¹àµçÁã´æ·ÕèËÒôéÇ 2 ŧµÑÇ (àÈÉà»ç¹ 0) Áѹ¡ç¤×ÍàÅ¢¤Ùè ËÒ¡ÁѹÁÕàÈÉ¡ç¤×ÍàÅ¢¤Õè áÅéÇàÈÉ·ÕèÇèÒ¹ÕèÁѹÁÕáµè 1 à·èÒ¹Ñé¹ ¨ÃÔ§ÁÑé¤ÃѺ·èÒ¹»Ãиҹ ... àÍéÒ â»êÐàªêÐà¢éÒ·Ò§â¨Ã»èÒÅÐàÁÒÐÅèФÃѺ ¹Ñ蹤×Í¡ÒùÓËÅÑ¡áµèÅÐËÅÑ¡ÁÒ Mod 2 Âѧä§ÅèФÃѺ ... ¾Õè¹éͧ 55555+
- ÊÓËÃѺËÅÑ¡¤Ùè àÃÒ¨Ðãªéà§×è͹ä¢ÍÐä÷´ÊͺÇèÒ¤èÒ·Õè¤Ù³´éÇ 2 ¹Ñé¹ ÁѹÁÕ 1 ËÃ×Í 2 ËÅÑ¡
·Ò§á¡é»ÑËÒ ...
- ãªé¡ÒÃÇÑ´¤ÇÒÁÂÒÇËÃ×ͨӹǹËÅÑ¡¢Í§¤èÒ·Õèä´é ¹Ñ蹤×Í IF Len(¤èÒ) > 1
- ËÒ¡ËÅÑ¡¤Ùè¹Ñé¹ (áµèÁÕàŢⴴæµÑÇà´ÕÂÇ) ÁÕ¤èÒµÑé§áµè 5 ¢Öé¹ä» (5, 6, 7, 8, 9) àÁ×èͤٳ´éÇ 2 áÅéǨзÓãËéä´é¼ÅÅѾ¸ìÁըӹǹ 2 ËÅÑ¡ ¹Ñ蹤×Í IF ¤èÒ >= 5
- ãªé¡ÒèѴÃٻẺãËéä´éµÑÇàÅ¢¢¹Ò´ 2 ËÅÑ¡
- ¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè ... §èÒÂÁÒ¡äÁè¢Í¡ÅèÒǶ֧¤ÃѺ
- ¡ÒÃËҤӵͺã¹ËÅÑ¡·Õè 15 ¡çäÁèä´éÂÒ¡àÅ ...
- ËÒ¡¤èÒ·Ò§¢ÇÒÁ×ÍÊØ´¢Í§¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè ÁÕ¤èÒà»ç¹ 0 ¡çµÍº 0 àÅÂ
- ËÒ¡äÁèãªè ãËéàÍÒ¤èÒ·Ò§¢ÇÒÁ×ÍÊØ´¢Í§¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè źÍÍ¡´éÇ 10 ¡ç¤×ͤӵͺ
|
 Design Time
 Run Time
ÁÒ´Ùâ¤é´¡Ñ¹à¶ÍÐ ...
Option Explicit
Private Sub Form_Load()
' µÑé§¿ÍÃìÁÍÂÙè¡Öè§¡ÅÒ§¨ÍÀÒ¾
Me.Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
' à¤ÅÕÂÃì˹éÒ¨Í
Call SetupScreen
' µÑÇÍÂèÒ§
txtFourteenDigit.Text = "35843904863297" ' <-- ¤ÓµÍº = 8
'txtFourteenDigit.Text = "35780502398494" ' <-- ¤ÓµÍº = 2
'txtFourteenDigit.Text = "358639048632965" ' <-- ¤ÓµÍº = 5
'txtFourteenDigit.Text = "35688202005060" ' <-- ¤ÓµÍº = 6
End Sub
' / -------------------------------------------------------------------------------------------------------------
' / â»Ãá¡ÃÁÂèÍÂ㹡ÒÃà¤ÅÕÂÃì˹éҨ͡ÒÃáÊ´§¼Å
Sub SetupScreen()
' / -------------------------------------------------------------------------------------------------------------
txtFourteenDigit.Text = ""
txtCheckDigit.Text = ""
txtIMEI.Text = ""
End Sub
' / -------------------------------------------------------------------------------------------------------------
' ¤ÅÔê¡»ØèÁà¾×èÍ·Ó¡ÒäӹdzËÒ Check Digit ËÅÑ¡·Õè 15 ¢Í§ IMEI 14 ËÅÑ¡áá
Private Sub cmdCal_Click()
' / -------------------------------------------------------------------------------------------------------------
Dim i As Integer
' ¨Ó¹Ç¹ 14 ËÅÑ¡
Dim Digit As Byte
' ¼ÅÃÇÁËÅÑ¡¤Õè
Dim SumOdd As Integer
' ¼ÅÃÇÁËÅÑ¡¤Ùè
Dim SumEven As Integer
' ¼ÅÃÇÁËÅÑ¡¤ÕèºÇ¡ËÅÑ¡¤Ùè
Dim Sum14Digit As Integer
' ¼ÅÃÇÁªÑèǤÃÒǢͧ¡Òäٳ 2 ã¹ËÅÑ¡¤Ùè
Dim EvenTemp As Integer
' µÃǨÊͺµÑÇàÅ¢¨Ó¹Ç¹ 14 ËÅÑ¡ááÇèÒ»é͹ÁҤúËÃ×ÍäÁè
If Trim(txtFourteenDigit.Text) = "" Or Len(Trim$(txtFourteenDigit.Text)) < 14 Then
MsgBox "¡Ãسһé͹µÑÇàÅ¢ 14 ËÅÑ¡áá¢Í§ IMEI ãËé¤Ãº¡è͹´éÇÂ.", _
vbOKOnly + vbExclamation, "ÃÒ§ҹ¤ÇÒÁ¼Ô´¾ÅÒ´"
Exit Sub
End If
' ǹÃͺ 14 ¤ÃÑ駨ҡ 14 ËÅÑ¡áá¢Í§ IMEI
For Digit = 1 To Len(txtFourteenDigit.Text)
' ËÒ¡ËÒÃàÍÒàÈÉä´é¼ÅÅѾ¸ìà»ç¹ 0 áÊ´§ÇèÒËÅÑ¡¤Ùè àÃÒ¨ÐÁÒ¾Ô¨ÒóÒËÅÑ¡¹Õéâ´ÂãËé¤Ù³´éÇ 2 à¢éÒä»
If (Digit Mod 2) = 0 Then
' Mid$(Val(txtFourteenDigit.Text), Digit, 1) * 2 ¤×ÍãªéËÅÑ¡¤ÙèÁÒ¤Ù³´éÇ 2
' ¼ÅÅѾ¸ì¹ÓÁҨѴàÃÕ§ãËéä´éµÑÇàÅ¢ 2 ËÅÑ¡
' Right$("00" & Mid$(Val(txtFourteenDigit.Text), Digit, 1) * 2, 2)
' àªè¹ ËÒ¡ä´é 8 ... ãËé¹Ó "00" µèÍ´éÇ "8" ¼ÅÅѾ¸ì¨Ðä´é "008"
' áµèãËé¹Ñº¨Ò¡¢ÇÒÁÒ 2 ËÅÑ¡ ¡ç¨Ðä´é¼ÅÅѾ¸ìà»ç¹ "08"
EvenTemp = Right$("00" & Mid$(Val(txtFourteenDigit.Text), Digit, 1) * 2, 2)
' ¹Ó¤èÒ 2 ËÅÑ¡·Õèä´é¨Ò¡¹Ô¾¨¹ì·Ò§´éÒ¹º¹ÁҺǡ¡Ñ¹ áÅеéͧºÇ¡à¢éҡѺ¼ÅÃÇÁËÅÑ¡¤Ùèà´ÔÁ·ÕèÁÕÍÂÙè´éÇ àªè¹
' ¡Ã³ÕËÅÑ¡ 2 ¡çºÇ¡¡Ñº 0 (¤èÒã¹ SumEven)
' ¡Ã³ÕËÅÑ¡ 4 ¡ç¨Ðãªé¡ÒÃǹÃͺã¹áµèÅÐËÅÑ¡ áÅéÇÁҺǡà¢éÒ仡Ѻ¤èÒà´ÔÁ (SumEven) 2 ¤ÃÑé§ àªè¹
' (ÊÁÁصÔ) SumEven à´ÔÁÁÕ¤èÒà·èҡѺ 1 Êèǹ¼Å¨Ò¡¡Òäٳ 2 ã¹ËÅÑ¡·Õè 4 ÁÕ¤èÒà·èҡѺ 08
' Ãͺáá SumEven = 1 + 0 à·èҡѺ 1
' ÃͺÊͧ SumEven = 1 + 8 à·èҡѺ 9
' §èÒÂÁÑé¤ÃѺ¾Õè¹éͧ ... 55555+
For i = 1 To 2
SumEven = SumEven + Val(Mid$(EvenTemp, i, 1))
Next
' µÑÇÍÂèÒ§ÍÕ¡á¹Ç¤Ô´·Õèãªé¤ÓÊÑè§áÅÐà§×è͹ä¢à¢éÒªèÇÂ
'EvenTemp = Val(Mid(txtFourteenDigit.Text, Digit, 1)) * 2
' ¡ÒÃãªéÇÔ¸Õ¡ÒùѺ¤ÇÒÁÂÒǢͧ¼Å¤Ù³ËÅÑ¡¤Ùè (àÅ×Í¡ IF µÑÇã´µÑǹ֧¹èФÃѺ)
'If Len(EvenTemp) > 1 Then
' ËÃ×Í ¡ÒÃàÍÒ¤èÒ·Õè >= 5 ÁÒà»ç¹à§×è͹ä¢
'If Mid$(txtFourteenDigit, Digit, 1) >= 5 Then
' For i = 1 To 2
' SumEven = SumEven + Val(Mid$(CStr(EvenTemp), i, 1))
' Next
'Else
' SumEven = SumEven + EvenTemp
'End If
' ËÒ¡ËÒÃàÍÒàÈɼÅÅѾ¸ìä´é 1 áÊ´§ÇèÒà»ç¹ËÅÑ¡¤Õè
Else
' ¡Òúǡ¢Í§ËÅÑ¡¤ÕèáµèÅÐËÅÑ¡ Íѹ¹Õé§èÒÂ˹èÍÂÅèÐ ¨Ö§äÁè¢Í͸ԺÒ¹èФÃѺ¾Õè¹éͧ
SumOdd = SumOdd + Mid$(Val(txtFourteenDigit.Text), Digit, 1)
End If
' ÊÒÁÒöÃÇÁ¼Å¢Í§ËÅÑ¡¤Ùè áÅÐËÅÑ¡¤ÕèµÃ§¹ÕéàÅ¡çä´é áµè¼Áá¡Í͡仨ҡ Loop For ¹èФÃѺ
' à¾×èÍãËéÁͧàËç¹§èÒÂæ
Next
' ¼ÅÃÇÁËÅÑ¡¤ÙèáÅÐËÅÑ¡¤Õè
Sum14Digit = SumOdd + SumEven
' / -------------------------------------------------------------------------------------------------------------
' ËÒ¤èÒËÅÑ¡·Õè 15 ËÃ×Í ËÅÑ¡µÃǨÊͺ¤ÇÒÁ¶Ù¡µéͧ (Check Digit) ¹Ñè¹àͧ â´ÂÁÕËÅÑ¡¡Òôѧ¹Õé
' 1. ËÒ¡¼ÅÃÇÁ¢Í§ËÅÑ¡¤ÕèáÅÐËÅÑ¡¤ÙèÃÇÁ¡Ñ¹Å§·éÒ´éÇ 0 ¶×ÍÇèÒ 0 à»ç¹¤ÓµÍºä´éàÅ·ѹ·Õ
' 2. ËÒ¡äÁèãªè µéͧàÅ×è͹ä»ËÒ¤èÒ·Õèŧ·éÒ´éÇ 0 ¶Ñ´ä» áÅÐËÒ¤èÒ·ÕèÍÂÙèËèÒ§¡Ñ¹¹Ñé¹à»ç¹¤ÓµÍº àªè¹
' ¼ÅÅѾ¸ìä´é 55 ¤èÒ·Õè¨Ðŧ·éÒ´éÇ 0 ¶Ñ´ä»¤×Í 60 ´Ñ§¹Ñé¹àÍÒ 60 - 55 ¨Ðä´é¤ÓµÍº¤×Í 5
' ¼ÅÅѾ¸ìä´é 67 ¤èÒ·Õè¨Ðŧ·éÒ´éÇ 0 ¶Ñ´ä»¤×Í 70 ´Ñ§¹Ñé¹àÍÒ 70 - 67 ¨Ðä´é¤ÓµÍº¤×Í 3
' ´éÒ¹º¹¤×Í¡ÒäԴáÅÐËÒ¤èÒ´éÇÂÁ×Í »ÑËÒ¡ç¤×ͨÐà¢Õ¹â»Ãá¡ÃÁÍÍ¡ÁÒä´éÂÑ§ä§ ...
' ¨Ò¡¤èÒµÑÇÍÂèÒ§ 55 ËÃ×Í 67 àÃÒ¨ÐàËç¹ä´éàÅÂÇèÒ ¨Ðµéͧ¹ÓËÅÑ¡¢ÇÒÁ×ÍÊØ´¤×Í 5 áÅÐ 7 ÍÍ¡ÁÒ
' §èÒÂæàÅÂÍÒ¨¨Ðãªé¤ÓÊÑè§ Right ¢ÇÒÊØ´ÁÒ 1 µÑÇ¡çä´é áÅéÇźÍÍ¡´éÇ 10 ¡ç¤×ͤӵͺ
' áµè·Õè¼Á¤Ô´¤×Í¡ÒÃãªéâÍà»ÍÃìàÃàµÍÃì Mod (ÍÕ¡áÅéÇ)
' ¡ç Mod ´éÇ 10 Âѧä§ÅèФÃѺ à¾ÃÒСÒà Mod ´éÇ 10 ¨Ð·ÓãËéÁÕ¤èÒÃÐËÇèÒ§ 0 - 9
' àªè¹ 55 Mod 10 ¡çàËÅ×ÍàÈÉ 5 áÅÐ 67 Mod 10 àËÅ×ÍàÈÉ 7
' áÅéǹӤèÒ¹Õéä»ÅºÍÍ¡¨Ò¡ 10 ¡ç¨Ðà»ç¹¤ÓµÍº àªè¹ 10 - 5 = 5 áÅÐ 10 - 7 = 3
' äÁèÇèҨФԴẺä˹ ¡è͹ŧÁ×Íà¢Õ¹â»Ãá¡ÃÁ ¨Óà»ç¹¨ÐµéͧÁÕ¤èÒÊÁÁصÔà¾×èÍ·Ó¡Ò÷ÓÊͺ¡è͹àÊÁÍ
' / -------------------------------------------------------------------------------------------------------------
' àÁ×èÍÍ͡Ẻä´éµÒÁ¹Õé ´Ñ§¹Ñ鹨֧äÁèÁÕ¤ÇÒÁ¨Óà»ç¹µéͧà¢Õ¹â¤é´ãËéÁÕà§×è͹ä¢ã´æÁÒàÅÂ
' á¤èÁտѧ¤ìªÑè¹ (ËÃ×ͤÓÊÑè§) Right ÁÒ´Ñ¡àÍÒ¤èÒËÅÑ¡¢ÇÒÁ×ÍÊØ´ ËÒ¡¡Ã³Õ¼ÅÃÇÁËÅÑ¡¤ÕèËÅÑ¡¤Ùèŧ·éÒ´éÇ 0
' ¨Ò¡µÑÇÍÂèÒ§ 14 ËÅÑ¡áá = 35843904863297
' ¼ÅÃÇÁ¢Í§ Sum14Digit = 72 ... ¹Ñ蹤×Í 72 Mod 10 = 2
' 10 - 2 = 8 <-- ¤×ͤӵͺ¢Í§ËÅÑ¡·Õè 15
txtCheckDigit.Text = Right$(10 - Sum14Digit Mod 10, 1)
' äÁè¨Óà»ç¹µéͧãÊèǧàÅçº à¾ÃÒÐ Mod ÁÕÅӴѺ¤ÇÒÁÊÓ¤ÑÊÙ§¡ÇèÒ¡ÒÃź ¨Ö§µéͧ·Ó¡Òà Mod ¡è͹
' ËÃ×Í¡ÃШÒºÃ÷Ѵ¤ÓÊÑè§áÅÐà§×è͹ä¢ÍÍ¡ÁÒãËéÁͧàËç¹§èÒÂæ
'If Sum14Digit Mod 10 = 0 Then
' txtCheckDigit.Text = 0
' ËÒ¡ Mod áÅéÇäÁèãªè 0 ãËéàÅ×è͹ä»ËÒ¤èÒ·ÕèÁÕÈÙ¹ÂìµèÍ·éÒÂ¶Ñ´ä» áÅéÇźÍÍ¡´éÇ 10
'Else
' txtCheckDigit.Text = (10 - Sum14Digit Mod 10)
'End If
' / -------------------------------------------------------------------------------------------------------------
' àÍÒ¤èÒ·Õèä´éÁҨѴàÃÕ§à»ç¹¤ÓµÍºÊØ´·éÒÂ
txtIMEI.Text = txtFourteenDigit.Text & txtCheckDigit.Text
' / -------------------------------------------------------------------------------------------------------------
End Sub
' / -------------------------------------------------------------------------------------------------------------
' / µÃǨÊͺ¡Òá´¤ÕÂìã¹ TextBox ä´é੾ÒеÑÇàÅ¢ 0 - 9
' / Index ¡ç¤×ͤèÒ ASCII Code ¢Í§ Character áµèÅеÑÇ
Function CheckDigitOnly(Index As Integer) As Integer
' / -------------------------------------------------------------------------------------------------------------
Select Case Index
' 0 - 9
Case 48 To 57
' Back Space
Case 8
' Enter
Case 13
' äÁèµéͧ¡ÒÃãËéÊÒÁÒö¡´¤ÕÂìÍ×è¹æä´é ¡ç¤×¹¤èÒ¡ÅѺà»ç¹ 0 àÊÁ×͹äÁèÁÕ¡Òá´¤ÕÂìã´æàÅÂ
Case Else
Index = 0
End Select
CheckDigitOnly = Index
End Function
Private Sub txtFourteenDigit_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Call cmdCal_Click
Else
KeyAscii = CheckDigitOnly(KeyAscii)
End If
End Sub
|
Conclusion: ⨷Âì¢é͹Õé¨ÐàËç¹ä´éÍÂèÒ§ªÑ´à¨¹àÅÂÇèÒ ÍÒÈѤÇÒÁÃÙéá¤èÃдѺ¾×é¹°Ò¹ªÑé¹»ÃжÁÁÒªèÇÂ㹡ÒÃá¡é»ÑËÒà·èÒ¹Ñé¹àͧ¤ÃѺ ãªé¡ÒäԴÇÔà¤ÃÒÐËì⨷Âì (ËҤӵͺ´éÇ¡Òäӹdz´éÇÂÁ×Í) áÅéǼÊÁ¼ÊÒ¹¡Ñº¡ÒÃãªé¤ÓÊÑè§¾×鹿¢Í§µÑÇá»ÅÀÒÉÒáµèÅеÑÇ ... ÅÒ·ÕàÁÕÂà¡èÒ àÍé »Õà¡èÒ ¢ÍÊ觤ÇÒÁÊØ¢ÊÇÑÊ´Õ»ÕãËÁèá´èà¾×è͹¾éͧ¹éͧ¾Õèâ»Ãá¡ÃÁàÁÍÃì·Ø¡æ·èÒ¹¤ÃѺ
|
|