anspauldou
Messages postés42Date d'inscriptionlundi 14 janvier 2002StatutMembreDernière intervention30 juin 2016
-
21 août 2007 à 19:20
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 2008
-
23 août 2007 à 12:30
Salut
Je voudrai savoir si quelqu'un a déjà un script qui permet de convertir des nombres en litteraux (en fonction definie par l'utilisateur ou procédures stockées) sinon quel site me conseillez vous pour l'obtenir ?
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 22 août 2007 à 12:46
Voilà un code d'une fonction delphi . A traduire en TSQL:
function TForm1.EnLettres(N:integer):string;
const
Unite: Array[1..16] of string=('un','deux','trois','quatre','cinq','six',
'sept','huit','neuf','dix','onze','douze',
'treize','quatorze','quinze','seize');
Dizaine: Array[2..8] of string=('vingt','trente','quarante','cinquante',
'soixante','','quatre-vingt');
Coefs:Array[0..3] of string=('cent','mille','million','milliard');
var
Temp: string;
C,D,U: Byte;
Coef: Byte;
I: Word;
Neg: boolean;
begin
if N = 0 then
begin
Result := ' Zéro';
Exit;
end;
Result := '';
Neg := N <0;
if Neg then N := -N;
Coef := 0;
Repeat
U := N mod 10; N := N div 10; {Récupère unité et dizaine}
D := N mod 10; N := N div 10; {Récupère dizaine}
if D in [1,7,9] then
begin
Dec(D);
Inc(U, 10);
end;
Temp := '';
if D > 1 then
begin
Temp := ' ' + Dizaine[D]; if (D < 8) and ((U 1) or (U 11)) then
Temp := Temp + ' et';
end;
if U > 16 then
begin
Temp := Temp + ' ' + Unite[10];
Dec(U,10);
end;
if U > 0 then Temp := Temp + ' ' + Unite[U]; if (Result '') and (D 8) and (U = 0) then Result := 's';
Result := Temp + Result;
C := N mod 10; N := N div 10; {Récupère centaine}
if C > 0 then
begin
Temp := '';
if C > 1 then Temp := ' ' + Unite[C] + Temp;
Temp := Temp + ' ' + Coefs[0];
if (Result = '') and (C > 1) then Result := 's';
Result := Temp + Result;
end;
if N > 0 then
begin
Inc(Coef);
I := N mod 1000;
if (I > 1) and (Coef > 1) then Result := 's' + Result;
if I > 0 then Result := ' ' + Coefs[Coef] + Result; if (I1) and (Coef 1) then Dec(N);
end;
until N = 0;
if Neg then Result := 'Moins' + Result
else
Result[2] := UpCase (Result[2]);
end;