japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 2021
-
20 mars 2007 à 22:34
Neroc
Messages postés2Date d'inscriptionvendredi 14 septembre 2007StatutMembreDernière intervention12 décembre 2007
-
12 déc. 2007 à 20:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
chavithra
Messages postés11Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention21 avril 2007 21 avril 2007 à 20:44
c'est quoi une clé de sécurité social?
ane2007
Messages postés2Date d'inscriptionmardi 20 mars 2007StatutMembreDernière intervention21 mars 2007 21 mars 2007 à 17:31
Merci JAPEE
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 21 mars 2007 à 13:30
Pour la Corse :
- on remplace le caractère 'A' ou 'B' par un '0' (zéro) ;
- si la lettre est 'A', on soustrait au nombre de 13 chiffres la valeur 1 000 000 et si la lettre est 'B' on soustrait 2 000 000, ce qui revient à mon avis à remplacer '2A' par '19' et '2B' par '18'.
J'ai retrouvé une fonction que j'avais faite, à voir si on peut l'optimiser, mais le principe est bon :
function GetNIRKey(S: string): string;
var
Value: Int64;
Dep: string;
begin
Result := '';
Dep := UpperCase(Copy(S, 6, 2));
if Dep = '2A' then
S := StringReplace(S, '2A', '19', [])
else if Dep = '2B' then
S := StringReplace(S, '2B', '18', []);
Value := StrToInt64Def(S, 0);
if Value <> 0 then
Result := Format('%.2d', [97 - (Value mod 97)]);
end;
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 21 mars 2007 à 13:16
Pouquoi utiliser currency ?
Avec Int64, on fait l'économie d'un Trunc :
Label1.Caption := Format('%.2d', [97 - StrToInt64Def(Edit1.text, 0) mod 97]);
bjim
Messages postés2Date d'inscriptionvendredi 26 septembre 2003StatutMembreDernière intervention20 novembre 2008 21 mars 2007 à 08:38
Pour simplifier : en 1 ligne (sauf pour la Corse :<) dans ton Edit1Change tu peux écrire:
label1.Caption := Format('%.2d',[97-Trunc(StrToCurrDef(edit1.text, 0)) mod 97]);
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 20 mars 2007 à 23:29
mouai bof ... par contre utilise StrToInt64Def(..., 0) sinon on as une erreur quand le champ est vide...
pense egalement a indenter ton code et sincerement, ce genre de code a plutot sa place dans les snippets plutot que les sources.
ah, je corrige egalement le tag "expert" pour "debutant" ... pas besoin d'etre expert pour utiliser un modulo.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 20 mars 2007 à 22:48
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 20 mars 2007 à 22:34
Et la Corse ? Tu as oublié la Corse (2A et 2B).
Vont pas être contents, les Corses, il va y avoir de la vendetta ^^
Il est vrai que ça complique un peu l'algo, mais il est tellement simple à la base...
Allez, au travail !
P-S: je sais, j'ai mis dans le même paragraphe les mots "travail" et "Corse", je ne l'ai pas fait exprès...
12 déc. 2007 à 20:07
9 juin 2007 à 15:40
22 avril 2007 à 08:36
21 avril 2007 à 20:44
21 mars 2007 à 17:31
21 mars 2007 à 13:30
- on remplace le caractère 'A' ou 'B' par un '0' (zéro) ;
- si la lettre est 'A', on soustrait au nombre de 13 chiffres la valeur 1 000 000 et si la lettre est 'B' on soustrait 2 000 000, ce qui revient à mon avis à remplacer '2A' par '19' et '2B' par '18'.
J'ai retrouvé une fonction que j'avais faite, à voir si on peut l'optimiser, mais le principe est bon :
function GetNIRKey(S: string): string;
var
Value: Int64;
Dep: string;
begin
Result := '';
Dep := UpperCase(Copy(S, 6, 2));
if Dep = '2A' then
S := StringReplace(S, '2A', '19', [])
else if Dep = '2B' then
S := StringReplace(S, '2B', '18', []);
Value := StrToInt64Def(S, 0);
if Value <> 0 then
Result := Format('%.2d', [97 - (Value mod 97)]);
end;
21 mars 2007 à 13:16
Avec Int64, on fait l'économie d'un Trunc :
Label1.Caption := Format('%.2d', [97 - StrToInt64Def(Edit1.text, 0) mod 97]);
21 mars 2007 à 08:38
label1.Caption := Format('%.2d',[97-Trunc(StrToCurrDef(edit1.text, 0)) mod 97]);
20 mars 2007 à 23:29
pense egalement a indenter ton code et sincerement, ce genre de code a plutot sa place dans les snippets plutot que les sources.
ah, je corrige egalement le tag "expert" pour "debutant" ... pas besoin d'etre expert pour utiliser un modulo.
20 mars 2007 à 22:48
http://xml.insee.fr/schema/nir.html#Clé_NIR-description
20 mars 2007 à 22:34
Vont pas être contents, les Corses, il va y avoir de la vendetta ^^
Il est vrai que ça complique un peu l'algo, mais il est tellement simple à la base...
Allez, au travail !
P-S: je sais, j'ai mis dans le même paragraphe les mots "travail" et "Corse", je ne l'ai pas fait exprès...