VB.NET - FUNZIONE CHE CALCOLA IL CODICE DI CONTROLLO DEL CODICE FISCALE (VALIDARE IL CODICE FISCALE)
Oggi vi metto a disposizione la Funzione che serve per Validare un Codice Fiscale e quindi quella che calcola il codice di controllo del Codice Fiscale.
Prima di iniziare serve creare delle Variabili Pubbliche per far funzionare la Funzione del Calcolo del Codice di Controllo del Codice Fiscale :
Public ArrayCharPosizioneDispari() As Integer = {1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23}
Public ArrayChar() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
Public ArrayPari As New ArrayList
Public ArrayDispari As New ArrayList
Il parametro che serve per far funzionare la funzione è :
CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET:
Dim Controllo As Boolean = CarattereControllo("rssmra50a01f205r")
if Controllo = TRUE then
Msgbox("Codice Fiscale Corretto",
vbInformation ,"Codice Fiscale Corretto")
Else
MsgBox("Errore Codice Fiscale ", vbInformation, "ATTENZIONE!!! Errore")
End If
La Funzione del Calcolo del codice di controllo del codice fiscale e restituisce TRUE = Codice Fiscale Corretto ; FALSE = Codice Fiscale Errato :
CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET:
Private Function CarattereControllo(ByVal CodiceFiscale As String) As Boolean
Dim risultato As Integer = 0
Dim sommapari As Integer = 0
Dim sommadispari As Integer = 0
Try
If CodiceFiscale.ToString <> "" Then
For i As Integer = 0 To CodiceFiscale.Length - 2 Step 1
'Vi ricordo che l'array parte da zero ma noi dobbiamo calcolare come se fosse 1
'e quindi Dispari si trovano nella posizione Pari e i Pari si trovano nella posizione Dispari
If i Mod (2) = 1 Then
'Indice Dispari - Posizione Dispari)
ArrayPari.Add(CodiceFiscale.Substring(i, 1).ToString)
Else
'Indice Pari - Posizione Pari
ArrayDispari.Add(CodiceFiscale.Substring(i, 1).ToString)
End If
Next
For i As Integer = 0 To ArrayPari.Count - 1 Step 1
If IsNumeric(ArrayPari(i).ToString) Then
sommapari = sommapari + ArrayPari(i).ToString
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & ArrayPari(i).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayPari(i).ToString) = ArrayChar(j).ToString) Then
sommapari = sommapari + j
'Console.WriteLine(ArrayPari(i).ToString & " ArrayPari(" & i & ").ToString = " & j)
Exit For
End If
Next
End If
Next
For i As Integer = 0 To ArrayDispari.Count - 1 Step 1
If IsNumeric(ArrayDispari(i).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayDispari(" & i & ").ToString = " & ArrayCharPosizioneDispari(ArrayDispari(i).ToString).ToString)
Else
For j As Integer = 0 To ArrayChar.Length - 1 Step 1
If (UCase(ArrayDispari(i).ToString) = ArrayChar(j).ToString) Then
sommadispari = sommadispari + ArrayCharPosizioneDispari(j).ToString
'Console.WriteLine(ArrayDispari(i).ToString & " ArrayCharPosizioneDispari(" & j & ").ToString = " & ArrayCharPosizioneDispari(j).ToString)
Exit For
End If
Next
End If
Next
End If
risultato = 0
ArrayPari.Clear()
ArrayDispari.Clear()
risultato = (sommapari + sommadispari) Mod 26 'Restituisce il Resto con il comando Mod
'Console.WriteLine(ArrayChar(risultato).ToString & " = " & CodiceFiscale.Substring(CodiceFiscale.Length - 1, 1).ToString)
'Controllo che la lettera che si trova nella posizione risultato o resto corrisponde a l'ultima lettera del codice fiscale passato
If (ArrayChar(risultato).ToString = UCase(CodiceFiscale.Substring(CodiceFiscale.Length - 1, 1).ToString)) Then
Return True
Else
Return False
End If
Catch ex As Exception
'Errore generato da qualche numero e carattere strano
Return False
End Try
End Function