Eli tällainen koodi. Voidaan tarkastaa onko henkilöturvatunnus oikein.
Henkilöturvatunnuksen viimeinen merkki on tarkastusmerkki, sillä voidaan tarkastaa onko henkilöturvatunnus annettu oikein, jos kaveri väittää olevansa Kalle Keksiä ja hetunsa on 111180123P, voidaan se helposti todeta että näin ei ole.
vaan oikea tarkastusmerkki on K, voidaan siis päätellä Kallen huijanneen sinulle syntymäajan tai hetun loppuosan.
Vastaavaa laskukaavaa käytetään käytännössä kaikissa ohjelmissa johon hetu tarvitsee kirjoittaa, esim. virastoissa jne.
Laskeminen kaikessa yksinkertaisuudessaan on simppeli, eli koko hetu:n (lukuunottamatta viimeistä tarkastusmerkkiä) numerosarja tässä esimerkissä 111180123 jaetaan 31. Jos jakojäännös on yksinumeroinen, se on tarkistusmerkki. Muuten jakojäännös määrää tarkistusmerkkinä käytettävän kirjaimen seuraavasti:
10 A
11 B
12 C
13 D
14 E
15 F
16 H
17 J
18 K
19 L
20 M
21 N
22 P
23 R
24 S
25 T
26 U
27 V
28 W
29 X
30 Y
Eli käytännössä se mitä tällä koodivinkillä halusin tuoda esiin, on visual basicilla yksinkertainen tapa laskea jakojäännös käyttämällä Mod operaattoria.
------------------------------------------------------
Tee Formille Text1 tekstiloota, ja Command1 nappula.
Koodi sisään.
Ja kirjoita tekstilootaan hetu ilman välimerkkiä tai viimeistä merkkiä. (tarkastusmerkki)
esim. 111180123. Ohjelmaa laskee tarkastusmerkin.
Dim lasku As Long Private Sub Command1_Click() lasku = Text1.Text Mod 31 Select Case lasku Case 1 Text1.Text = Text1.Text & " 1" Case 2 Text1.Text = Text1.Text & " 2" Case 3 Text1.Text = Text1.Text & " 3" Case 4 Text1.Text = Text1.Text & " 4" Case 5 Text1.Text = Text1.Text & " 5" Case 6 Text1.Text = Text1.Text & " 6" Case 7 Text1.Text = Text1.Text & " 7" Case 8 Text1.Text = Text1.Text & " 8" Case 9 Text1.Text = Text1.Text & " 9" Case 10 Text1.Text = Text1.Text & " A" Case 11 Text1.Text = Text1.Text & " B" Case 12 Text1.Text = Text1.Text & " C" Case 13 Text1.Text = Text1.Text & " D" Case 14 Text1.Text = Text1.Text & " E" Case 15 Text1.Text = Text1.Text & " F" Case 16 Text1.Text = Text1.Text & " H" Case 17 Text1.Text = Text1.Text & " J" Case 18 Text1.Text = Text1.Text & " K" Case 19 Text1.Text = Text1.Text & " L" Case 20 Text1.Text = Text1.Text & " M" Case 21 Text1.Text = Text1.Text & " N" Case 22 Text1.Text = Text1.Text & " P" Case 23 Text1.Text = Text1.Text & " R" Case 24 Text1.Text = Text1.Text & " S" Case 25 Text1.Text = Text1.Text & " T" Case 26 Text1.Text = Text1.Text & " U" Case 27 Text1.Text = Text1.Text & " V" Case 28 Text1.Text = Text1.Text & " W" Case 29 Text1.Text = Text1.Text & " X" Case 30 Text1.Text = Text1.Text & " Y" End Select End Sub
Taulukointia voisi käyttää hyväksi...
Aihe on jo aika vanha, joten et voi enää vastata siihen.