15. november 2001 - 14:30
Der er
19 kommentarer og 1 løsning
cpr nummer cheker
er der en der kan få det til at virke: function TForm1.IsCprValid(Cpr: integer): boolean; var I, TotalCount: integer; CurrentNum, StartCPR: string; Vaerdi : array[1..10] of integer; begin if length(inttostr(Cpr)) <> 10 then result := false else begin StartCPR := inttostr(Cpr); Delete(StartCPR, Length(StartCPR), Length(StartCPR));//fjerner sidste værdi for I := 1 to 10 do begin CurrentNum := inttostr(Cpr)[I]; case I of 1: Vaerdi[1] := (Round(strtoint(CurrentNum) * 6)); 2: Vaerdi[2] := (Round(strtoint(CurrentNum) * 5)); 3: Vaerdi[3] := (Round(strtoint(CurrentNum) * 4)); 4: Vaerdi[4] := (Round(strtoint(CurrentNum) * 3)); 5: Vaerdi[5] := (Round(strtoint(CurrentNum) * 2)); 6: Vaerdi[6] := (Round(strtoint(CurrentNum) * 6)); 7: Vaerdi[7] := (Round(strtoint(CurrentNum) * 5)); 8: Vaerdi[8] := (Round(strtoint(CurrentNum) * 4)); 9: Vaerdi[9] := (Round(strtoint(CurrentNum) * 3)); 10: Vaerdi[10] := (Round(strtoint(CurrentNum)*2)); end; end; TotalCount := (Vaerdi[1]+Vaerdi[2]+Vaerdi[3]+Vaerdi[4]+Vaerdi[5]+Vaerdi[6]+Vaerdi[7]+Vaerdi[8]+Vaerdi[9]+Vaerdi[10]) div 11; if TotalCount = 10 then result := true else result := false; end; end; procedure TForm1.FormClick(Sender: TObject); begin//Eksempel Cpr: if IsCprValid(1008860159) then showmessage(\'Ok\') else showmessage(\'Ikke valid\'); end; og så sende mig sours (saves i delphi)
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
15. november 2001 - 14:31
#1
voodoofx@ofir.dk
15. november 2001 - 14:37
#2
Prøv denne : function CheckCpr( aCpr : String ) : Boolean; const CtrlTal : array[1..10] of Integer = (4,3,2,7,6,5,4,3,2,1); var Cnt, Err, V, ChkSum : Integer; begin if Length(aCpr) = 10 then begin Err := 0; ChkSum := 0; Cnt := 1; while ( Cnt < 11 ) and ( Err = 0 ) do begin Val(aCpr[Cnt],V,Err); ChkSum := ChkSum + ( V * CtrlTal[Cnt] ); Inc(Cnt); end; Result := ( Err = 0) and ( Frac(ChkSum / 11) = 0); end else Result := FALSE; end; Den Virker /Martin
15. november 2001 - 14:43
#3
hmmm skal nok foreklare det lidt bædre alså når at man gemmer sit projekt i delphi så er der jo nogle filer som bedes sende til min e-mail
15. november 2001 - 14:47
#4
Brug min funktion den virker
15. november 2001 - 15:02
#5
EEEEEEhhhhhhhhhhhhhhhhhhh
15. november 2001 - 15:05
#6
?????
15. november 2001 - 15:08
#7
se spørgsmål: 132407 under besvarede emner: cpr check. 1: Beregningen er forkert (11 - x MOD 11). 2: Du kan ikke overføre tallet som en integer (max 32000) Forslag sendt til woodoofx
15. november 2001 - 15:10
#8
PS: Der mangler et datocheck (f.eks fanges 32-2-97-1234 ikke)
15. november 2001 - 15:11
#9
hreff >> Integer er : Integer –2147483648..2147483647 signed 32-bit i en 32 bit pascal, det andet var i gamle dage *S*
15. november 2001 - 15:12
#10
1: gem dit projekt 2: send de gemte filer til min e-mail 3: hvis det virker får du dine point
15. november 2001 - 15:14
#11
hreiff> woodofx ??? min mail er voodoofx@ofir.dk (v ikke w)
15. november 2001 - 15:17
#12
hreiff> kan du lave programmet rigtigt og så sende mig projektet
15. november 2001 - 15:26
#13
-> martinlind: Ok - Det er bar mig som bruger en oldgammel version af Delphi (1) -> maxium: Jeg har sendt et forslag (til voodoofx@ofir.dk), men vores email-system er lidt langsomt. Håber at det dukker op
15. november 2001 - 15:29
#14
-> martinlind: PS - din 32 bit signed er iøvrigt heller ikke nok, f.eks. d. 301075-1234 ?
15. november 2001 - 15:49
#15
hreiff> hvis at jeg intaster mit cpr nr fx ******-**** så står der cpr nummer forkert længde
15. november 2001 - 15:52
#16
1: har fundet fejlen inden de 4 sidste tal må man ikke skrive - 2: hvordan laver jeg denne fejl så brugeren kan intaste sit cpr som man skal nu 1111111111 og 111111-1111
15. november 2001 - 16:03
#17
en mere fejl hvis at man intaster 0000000000 er cpr nr godkendt
15. november 2001 - 16:13
#18
0000000000 bliver fanget af datokontrollen hvis du laver sådan en (ugyldig dato). -\'en kan du klare med: Først i Button1.click: var cprnr: string; cprnr := edit1.text; if cprnr[7] = \'-\' then delete(cprnr,7,1); {fjerner bindestregen} og så fortsætter med cprnr istedet for edit1.text //hreiff
15. november 2001 - 16:25
#19
En datokontrol laver du som følger: function ChkDato(cprnr:cprtype):boolean; var dg,md,ar : integer; begin dg := StrToInt(copy(cprnr,1,2)); {første 2 tal} md := StrToInt(copy(cprnr,3,2)); {næste 2 tal } ar := StrToInt(copy(cprnr,5,2)); Result := true; if ((dg=0) or (dg > 31)) then Result := false; if ((md=0) or (md > 12)) then Result := false; case md of 4,6,9,11: if dag > 30 then Result := false; 2: if dag > 29 then Result := false; end; end; Indsættes efter check af cifre. så mangler der bare en kontrol for skudår og 28/2 //hreiff
17. november 2001 - 11:46
#20
luket (vil ikke virke ornlig)
Kurser inden for grundlæggende programmering