ËÒ¡ÁÕ¤Ó¶ÒÁ ¢ÍãËéä»â¾Êµìŧ àÇ纺ÍÃì´¨Õ·Ù¨Õà¹çµ´Íµ¤ÍÁ µÑÇãËÁèá·¹¹èФÃѺ

ËÃ×͵ԴµèÍà¢éÒÁÒ·Ò§ Inbox ·Õè à¿«ºØê¤ ¼Á¤ÃѺ

˹éÒËÅÑ¡
¢èÒÇÊÒà - º·¤ÇÒÁ ·Ñé§ËÁ´
VB 6/VB.Net
ASP/ASP.Net
¨Ñº©èÒ¤ÍÁ¾ÔÇàµÍÃì
àÃÕ¹ÃÙé¼èÒ¹ Flash Movie
º·¤ÇÒÁ·ÕèÁÕ¼ÙéµÍºÅèÒÊØ´  
 RSS Feeds
 ´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...   Download â»Ãá¡ÃÁ RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 6 1 6 1 5 3

7 ¸Ñ¹ÇÒ¤Á ¾.È.2549
108 Users On-Line.
Visitors - Page views
 8 9 7 3 8 9 6
1 ¡ØÁÀҾѹ¸ì ¾.È.2551

Google   
àÇçº g2gnet.com
¢¹Ò´µÑÇÍÑ¡ÉÃ:  

ᨡ¿ÃÕâ¤é´ 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. ¡Ã³Õ·Õèà»ç¹ËÅÑ¡¤Õè (ËÅÑ¡·Õè 1, 3, 5, 7, 9, 11, 13) ãËé¹Ó¤èÒã¹áµèÅÐËÅÑ¡¢Í§ËÅÑ¡¤ÕèÁҺǡ¡Ñ¹ä»àÅÂ
      µÑÇÍÂèÒ§
    • ËÅÑ¡·Õè 1 ¤×Í 3
    • ËÅÑ¡·Õè 3 ¤×Í 8
    • ËÅÑ¡·Õè 5 ¤×Í 3
    • ËÅÑ¡·Õè 7 ¤×Í 0
    • ËÅÑ¡·Õè 9 ¤×Í 8
    • ËÅÑ¡·Õè 11 ¤×Í 3
    • ËÅÑ¡·Õè 13 ¤×Í 9
      ¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè¤×Í 34
  2. ¡Ã³Õ·Õèà»ç¹ËÅÑ¡¤Ùè (ËÅÑ¡·Õè 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
  3. ãËé¹Ó¼ÅÃÇÁ¢Í§ËÅÑ¡¤Õè áÅÐ ¼ÅÃÇÁËÅÑ¡¤Ùè ÁҺǡ¡Ñ¹ ¹Ñ蹤×Í 34 + 38 = 72
  4. ¢Ñé¹µÍ¹ÊØ´·éÒ ¤×Í ¡ÒÃËÒËÅÑ¡·Õè 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
    1. ÁÒ´Ù¡ÒÃá¡é»Ñ­ËÒã¹áµèÅТéÍ
    2. àÃÒ¨ÐÃÙéä´éÍÂèÒ§äÃÇèÒ ËÅÑ¡µèÒ§æµÒÁ⨷Âì·ÕèµÑé§äÇéÍѹä˹Áѹà»ç¹ËÅÑ¡¤Ùè ËÃ×Í ËÅÑ¡¤Õè (ºÒ§¤¹ÍÒ¨¨Ð¹Ö¡¶Ö§¡ÒÃǹÅÙ» 2 ¤ÃÑé§ á¡àÍÒËÅÑ¡¤Ùè ËÅÑ¡¤Õèá·¹) ... ¢Í¾Ò´¾Ô§ä»ÊÁÑ»ÃжÁÍÕ¡áÅéǤÃѺ·èÒ¹»Ãиҹ 55555+ àÅ¢¨Ó¹Ç¹àµçÁã´æ·ÕèËÒôéÇ 2 ŧµÑÇ (àÈÉà»ç¹ 0) Áѹ¡ç¤×ÍàÅ¢¤Ùè ËÒ¡ÁѹÁÕàÈÉ¡ç¤×ÍàÅ¢¤Õè áÅéÇàÈÉ·ÕèÇèÒ¹ÕèÁѹÁÕáµè 1 à·èÒ¹Ñé¹ ¨ÃÔ§ÁÑé¤ÃѺ·èÒ¹»Ãиҹ ... àÍéÒ â»êÐàªêÐà¢éÒ·Ò§â¨Ã»èÒÅÐàÁÒÐÅèФÃѺ ¹Ñ蹤×Í¡ÒùÓËÅÑ¡áµèÅÐËÅÑ¡ÁÒ Mod 2 Âѧä§ÅèФÃѺ ... ¾Õè¹éͧ 55555+
    3. ÊÓËÃѺËÅÑ¡¤Ùè àÃÒ¨Ðãªéà§×è͹ä¢ÍÐä÷´ÊͺÇèÒ¤èÒ·Õè¤Ù³´éÇ 2 ¹Ñé¹ ÁѹÁÕ 1 ËÃ×Í 2 ËÅÑ¡
        ·Ò§á¡é»Ñ­ËÒ ...
      • ãªé¡ÒÃÇÑ´¤ÇÒÁÂÒÇËÃ×ͨӹǹËÅÑ¡¢Í§¤èÒ·Õèä´é ¹Ñ蹤×Í IF Len(¤èÒ) > 1
      • ËÒ¡ËÅÑ¡¤Ùè¹Ñé¹ (áµèÁÕàŢⴴæµÑÇà´ÕÂÇ) ÁÕ¤èÒµÑé§áµè 5 ¢Öé¹ä» (5, 6, 7, 8, 9) àÁ×èͤٳ´éÇ 2 áÅéǨзÓãËéä´é¼ÅÅѾ¸ìÁըӹǹ 2 ËÅÑ¡ ¹Ñ蹤×Í IF ¤èÒ >= 5
      • ãªé¡ÒèѴÃٻẺãËéä´éµÑÇàÅ¢¢¹Ò´ 2 ËÅÑ¡
    4. ¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè ... §èÒÂÁÒ¡äÁè¢Í¡ÅèÒǶ֧¤ÃѺ
    5. ¡ÒÃËҤӵͺã¹ËÅÑ¡·Õè 15 ¡çäÁèä´éÂÒ¡àÅ ...
      • ËÒ¡¤èÒ·Ò§¢ÇÒÁ×ÍÊØ´¢Í§¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè ÁÕ¤èÒà»ç¹ 0 ¡çµÍº 0 àÅÂ
      • ËÒ¡äÁèãªè ãËéàÍÒ¤èÒ·Ò§¢ÇÒÁ×ÍÊØ´¢Í§¼ÅÃÇÁËÅÑ¡¤Ùè+¼ÅÃÇÁËÅÑ¡¤Õè źÍÍ¡´éÇ 10 ¡ç¤×ͤӵͺ
    º·¤ÇÒÁ·Õèà¡ÕèÂÇ¢éͧ
    ᨡ¿ÃÕ Source Code â»Ãá¡ÃÁ¡ÒÃÊØèÁËÁÒÂàÅ¢ºÑµÃ»ÃЪҪ¹
    ´ÒǹìâËÅ´
    ´ÒǹìâËÅ´ Source Code ÊÓËÃѺ MS Visual Basic 6.0

    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´éÇÂÁ×Í) áÅéǼÊÁ¼ÊÒ¹¡Ñº¡ÒÃãªé¤ÓÊÑè§¾×鹿¢Í§µÑÇá»ÅÀÒÉÒáµèÅеÑÇ ... ÅÒ·ÕàÁÕÂà¡èÒ àÍé »Õà¡èÒ ¢ÍÊ觤ÇÒÁÊØ¢ÊÇÑÊ´Õ»ÕãËÁèá´èà¾×è͹¾éͧ¹éͧ¾Õèâ»Ãá¡ÃÁàÁÍÃì·Ø¡æ·èÒ¹¤ÃѺ


    ¨Õ ·Ù ¨Õ à¹çµ ´Íµ ¤ÍÁ - g2gNet Dot Com
    àÅ¢·ÐàºÕ¹¾Ò³ÔªÂìÍÔàÅç¡·Ã͹ԡÊì 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] ËÃ×Í â·Ã. 08-6862-6560