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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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