Om det er Integer.Parse der er et forkert valg, eller om det er den funktion der var kilde for oversættelsen der fejler, ved jeg ikke helt, men det går ikke super godt :-(
Den skulle validere CVR numre, men den fejler gyldige numre.
Jeg tog nogle tilfældige numre fra CVR.dk og lavede en lille konsol applikation, men samtlige numre fejler.
Jeg lavede en kopi, der returnerer tallet, frem for blot Boolean værdien for om det er lig med 0.
Det er baseret på information fra følgende side:
http://erhvervsstyrelsen.dk/modulus_11Hvor mon det går galt?
Output:
13453845:
False
8
29813124:
False
5
32310370:
False
2
27842453:
False
5
28948980:
False
5
29664218:
False
5
11111111:
False
8
Kode:
Module Module1
Sub Main()
Dim numbers() As String = New String() {"13453845", "29813124", "32310370", "27842453", "28948980", "29664218, "11111111""}
For Each number As String In numbers
Console.WriteLine(number & ":")
Console.WriteLine(ValidateVAT_DK(number))
Console.WriteLine(ValidateVAT_DK2(number))
Console.WriteLine()
Next
Console.ReadLine()
End Sub
Public Function ValidateVAT_DK(vat As String) As Boolean
Dim i = 0
Dim total = New Integer() {2, 7, 6, 5, 4, 3, 2, 1}.Sum(Function(m) Integer.Parse(vat(i)) * m)
i = i + 1
' The remainder should be 0 for it to be valid..
Return total Mod 11 = 0
End Function
Public Function ValidateVAT_DK2(vat As String) As Integer
Dim i = 0
Dim total = New Integer() {2, 7, 6, 5, 4, 3, 2, 1}.Sum(Function(m) Integer.Parse(vat(i)) * m)
i = i + 1
' The remainder should be 0 for it to be valid..
Return total Mod 11
End Function
End Module