Jag försöker validera en inmatning av personnummer men får hela tiden fel fast personnumret är angivet rätt. Eftersom jag inte är Delphi-programmerare kan jag inte säga med säkerhet vad som är problemet (har ingen dokumentation av Val() ). Men om det är så att den bara klarar 32-bitars (long normalt) heltal så klarar den bara upp till 2,7 Ett personnummer behandlas som en sträng, inte som ett tal. Eftersom jag inte är Delphi-programmerare kan jag inte säga med säkerhet vad som är problemet (har ingen dokumentation av Val() ). Men om det är så att den bara klarar 32-bitars (long normalt) heltal så klarar den bara upp till ca 2 700 000 000 eller 4 500 000 000 beroende på om det är teckensatt eller inte. Oavsett så klarar ett sådant tal inte av alla 10-siffriga tal som ett personnummer är (du har väl tagit bort bindestrecket?). Kanske är det detta som ger dig problem. HejValidering av personnummer, val säger att det är fel ???
Val(txtKundPersonnummer.Text, iPos, iFelNr);
iPos > 'personnumret'
Klarar inte val att hantera så stora tal eller ?Sv: Validering av personnummer, val säger att det är fel ???
Sv: Validering av personnummer, val säger att det är fel ???
Sv: Validering av personnummer, val säger att det är fel ???
Dessutom, att bara kontrollera om ett personnummer är numeriskt är inte tillräckligt, du bör även kolla den checksumma som personnummer innehåller i sista siffran. Jag är övertygad om att du hittar algoritmen och ev kod för detta i forumet eller tips&tricks om du söker här på pellesoft. Så leta upp en sådan algoritm i stället, det är mitt tips...Sv: Validering av personnummer, val säger att det är fel ???
Som TT skriver,personnummer behandlas bäst som sträng,
och det är en sträng precis som telefonnummer,postnummer mfl.
Kolla mitt uppskick Programarkivet:KontrollSiffra PersonNummer mfl. i Vb , den kan du enkelt porta till Delphi.
Om du inte har Vb installerat kan du läsa formens kod med tex NotePad.
/Sven