Mając poniższy kod, który tak jak pisałem działa na pojazdy z Ameryki co trzeba zmienić, żeby działał na pojazdy z Europy ???
public object Strings { get; private set; } = "cały numer VIN";
public static string poczatekVin = "osiem pierwszych znaków numeru VIN";
public static string koniecVIN = "osiem ostatnich znaków numeru VIN";
public string VIN(string vin1to8, string vin10to17
)
{
// Funkcja zwracająca pełny VIN z cyfrą kontrolną po podaniu pierwszych 8 i ostanich 8 liter numeru
//
var iloczyn = 0;
int i;
char cyfra_Kontrolna;
if (vin1to8.Count() != 8)
return "";
if (vin10to17.Count() != 8)
return "";
Dictionary<char, int> lettervalue = new Dictionary<char, int>()
{
{
'A',
1
},
{
'B',
2
},
{
'C',
3
},
{
'D',
4
},
{
'E',
5
},
{
'F',
6
},
{
'G',
7
},
{
'H',
8
},
{
'J',
1
},
{
'K',
2
},
{
'L',
3
},
{
'M',
4
},
{
'N',
5
},
{
'P',
7
},
{
'R',
9
},
{
'S',
2
},
{
'T',
3
},
{
'U',
4
},
{
'V',
5
},
{
'W',
6
},
{
'X',
7
},
{
'Y',
8
},
{
'Z',
9
},
{
'1',
1
},
{
'2',
2
},
{
'3',
3
},
{
'4',
4
},
{
'5',
5
},
{
'6',
6
},
{
'7',
7
},
{
'8',
8
},
{
'9',
9
},
{
'0',
0
}
};
Dictionary<int, int> positionweight = new Dictionary<int, int>()
{
{
1,
8
},
{
2,
7
},
{
3,
6
},
{
4,
5
},
{
5,
4
},
{
6,
3
},
{
7,
2
},
{
8,
10
},
{
9,
0
},
{
10,
9
},
{
11,
8
},
{
12,
7
},
{
13,
6
},
{
14,
5
},
{
15,
4
},
{
16,
3
},
{
17,
2
}
};
i = 1;
foreach (char litera in vin1to8)
{
iloczyn += lettervalue[char.ToUpper(litera)] * positionweight[i];
i += 1;
}
i = 10;
foreach (char litera in vin10to17)
{
iloczyn += lettervalue[char.ToUpper(litera)] * positionweight[i];
i += 1;
}
iloczyn = iloczyn % 11;
switch (iloczyn)
{
case 0:
{
cyfra_Kontrolna = '0';
break;
}
case 1:
{
cyfra_Kontrolna = '1';
break;
}
case 2:
{
cyfra_Kontrolna = '2';
break;
}
case 3:
{
cyfra_Kontrolna = '3';
break;
}
case 4:
{
cyfra_Kontrolna = '4';
break;
}
case 5:
{
cyfra_Kontrolna = '5';
break;
}
case 6:
{
cyfra_Kontrolna = '6';
break;
}
case 7:
{
cyfra_Kontrolna = '7';
break;
}
case 8:
{
cyfra_Kontrolna = '8';
break;
}
case 9:
{
cyfra_Kontrolna = '9';
break;
}
case 10:
{
cyfra_Kontrolna = 'X';
break;
}
default:
{
return "";
}
}
return vin1to8 + cyfra_Kontrolna + vin10to17;
}
private void simpleButton1_Click(object sender, EventArgs e)
{
//VIN(poczatekVin, koniecVIN);
MessageBox.Show(VIN(txtPoczatekVin.Text, txtKoniecVin.Text).ToString());
}
private void Form1_Load(object sender, EventArgs e)
{
txtNrVin.Select();
}
private void txtNrVin_EditValueChanged(object sender, EventArgs e)
{
txtPoczatekVin.Text = txtNrVin.Text.Substring(0, 8);
txtKoniecVin.Text = txtNrVin.Text.Substring(9, 8);
}
}