Avatar billede tommer Nybegynder
09. juni 2003 - 21:44 Der er 11 kommentarer og
2 løsninger

validering af dansk cpr nummer

er der nogen der ligger inde med en valideringsmaske til et dansk cpr nummer ??
Avatar billede a-torsten Nybegynder
09. juni 2003 - 21:46 #1
Function check_cpr(ByVal Cprnr)
Dim Tal, I, Sum, Rest, Kontroltal, Resultat
Cprnr = Cprnr & " "
If Val(Cprnr) = 0 Or Len(Cprnr) < 10 Then
    Resultat = "Mangler data"
Else
    Tal = "432765432"
    For I = 1 To 9
          Sum = Sum + Val(Mid(Cprnr, I, 1)) * Val(Mid(Tal, I, 1))
    Next
    Rest = Sum Mod 11
    Kontroltal = 11 - Rest
    If Rest = 0 Then Kontroltal = 0
    Resultat = "Fejl"
    If Kontroltal = 10 Then Resultat = "Dato og/eller Løbenummerfejl"
    If Kontroltal = Val(Mid(Cprnr, 10)) Then Resultat = "OK"
End If
check_cpr = Resultat
End Function


?? Måske... Er ikk sikker...
Avatar billede clausjul Nybegynder
09. juni 2003 - 22:04 #2
Prøv at se om der er noget på
http://www.regexplib.com/
Avatar billede roenving Novice
09. juni 2003 - 22:08 #3
>>a-torsten

-- din beregning er rigtig, men ville det ikke være nemmere at bruge:

    Tal = "4327654321"
    For I = 1 To 10
          Sum = Sum + Val(Mid(Cprnr, I, 1)) * Val(Mid(Tal, I, 1))
    Next
    If Som Mod 11 <> 0 Then "CPR-nummer forkert"
Avatar billede a-torsten Nybegynder
09. juni 2003 - 22:10 #4
Jow.. Det kan du da egentlig have ret i..
Avatar billede lap Nybegynder
09. juni 2003 - 22:14 #5
Mangler kontrol af datoen, størrelsen af 7 ciffer og midlertidigt tildelte cpr-numre.

Her findes den totale dokumentation: http://www.cpr.dk/imagesupload/dokument/Fremtidig%20personnummerløsning.doc
Avatar billede tommer Nybegynder
09. juni 2003 - 22:56 #6
jeg er ved at omskrive til c#, men hvad er Mid ??
Avatar billede roenving Novice
09. juni 2003 - 23:02 #7
-- jeg ville gætte på charAt , som det bruges her (udfra javascript-syntaks)
Avatar billede twm Nybegynder
09. juni 2003 - 23:20 #8
Sådan her kan du genskabe mid i c#:
public static string Mid(string MyString,int startIndex, int length)
{
    return MyString.Substring(startIndex, length);
}
public static string Mid(string MyString,int startIndex)
{
    return MyString.Substring(startIndex);
}
Avatar billede tommer Nybegynder
10. juni 2003 - 22:59 #9
jeps det spiller ;-)
her kommer min c# kode:

string Cprnr= CPRTextBox.Text;
string Tal = "4327654321";
double Sum=0;
 
if (Cprnr.Length != 10){
  args.IsValid = false;
}
else{
  for(int i=0; i<=9; i++){
  Sum += (double.Parse(Cprnr.Substring(i,1))*double.Parse(Tal.Substring(i,1)));
    if(Sum % 11 == 0){
    args.IsValid = true;
    }
  }//slut for
args.IsValid = false;
}

jeg vil gerne have svar fra:

a-torsten
roenving
twm

så kan i dele points da i alle har hjulpet på rette vej...
Avatar billede tommer Nybegynder
10. juni 2003 - 23:01 #10
nogen vil nok skrive koden anderledes *g*
den kan vist godt optimeres lidt ;-)
Avatar billede tommer Nybegynder
10. juni 2003 - 23:13 #11
øv jeg var vist lidt for hurtig....
der er en lille bug...
vender tilbage :0
Avatar billede sbjerre Nybegynder
16. september 2003 - 15:27 #12
private Boolean validateCpr(String cpr)
{
    if(cpr.Length == 11)
    {
        cpr = cpr.Substring(0,6) + cpr.Substring(7,4);
        string N = "432765432";
        int Sum = 0;
        int Remainder = 0;
        int ControlNo = 0;
        for(int x = 0; x < 9; x++)
        {
            Sum += Convert.ToInt32(cpr.Substring(x,1)) * Convert.ToInt32(N.Substring(x,1));
        }
        Remainder = Sum % 11;
        ControlNo = 11 - Remainder;
        if(Remainder == 0)
        {
            ControlNo = 0;
        }
        if(ControlNo == Convert.ToInt32(cpr.Substring(9)))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
Avatar billede tommer Nybegynder
16. september 2003 - 23:27 #13
oki... lukker ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester