Articles   Members Online:
-Article/Tip Search
-News Group Search over 21 Million news group articles.
-Delphi/Pascal
-CBuilder/C++
-C#Builder/C#
-JBuilder/Java
-Kylix
Member Area
-Home
-Account Center
-Top 10 NEW!!
-Submit Article/Tip
-Forums Upgraded!!
-My Articles
-Edit Information
-Login/Logout
-Become a Member
-Why sign up!
-Newsletter
-Chat Online!
-Indexes NEW!!
Employment
-Build your resume
-Find a job
-Post a job
-Resume Search
Contacts
-Contacts
-Feedbacks
-Link to us
-Privacy/Disclaimer
Embarcadero
Visit Embarcadero
Embarcadero Community
JEDI
Links
How to create Numbers in french plain text Turn on/off line numbers in source code. Switch to Orginial background IDE or DSP color Comment or reply to this aritlce/tip for discussion. Bookmark this article to my favorite article(s). Print this article
14-Jun-03
Category
Algorithm
Language
Delphi 2.x
Views
95
User Rating
9
# Votes
1
Replies
0
Publisher:
DSP, Administrator
Reference URL:
DKB
			Author: Jean Claude Servaye

Converting integer to plain text in French

Answer:

1   function IntToLetters(N: Integer): string;
2   
3     function Mille(N: Integer; P: Integer): string;
4   
5       // Calcul des nombre de 0..99
6       function Cent(N: Integer): string;
7       const
8         X: array[0..20] of string =
9         ('zero', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 
10  'neuf',
11          'dix',
12          'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept',
13            'dix-huit', 'dix-neuf', 'vingt');
14        Y: array[2..10] of string =
15        ('vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante',
16          'quatre-vingt', 'quatre-vingt', 'cent');
17      var
18        A, B: Integer;
19        R, C: string;
20      begin
21        // Si le nombre est inferieur ou egal a 20 on a la solution directe
22        if (N <= 20) then
23        begin
24          R := X[N];
25        end;
26        // Si le nombre est superieur a 20
27        if (N > 20) and (N < 100) then
28        begin
29          // on prend la dizaine
30          A := N div 10;
31          // on pend l'unité
32          B := N mod 10;
33          // si l'unité est un, le séparateur est 'et'
34          if (B = 1) and (A in [2, 3, 4, 5, 6, 7]) then
35            C := ' et '
36          else
37            C := ' ';
38          // si l'unite est supérieure a 1, le séparateur est un '-'
39          if (B > 1) and (A in [2, 3, 4, 5, 6, 7, 8, 9]) then
40            C := '-';
41          // si la dizaine est 7 ou 9 on compte les unités de 10 ? 19
42          if (A = 7) or (A = 9) then
43            B := B + 10;
44          // On calcule la solution
45          if (B = 0) then
46            R := Y[A]
47          else
48            R := Y[A] + C + X[B];
49        end;
50        Result := R;
51      end;
52  
53      // Calcul des nombres de 100..999
54    var
55      A, B: Integer;
56      R: string;
57    begin
58      if (N >= 100) then
59      begin
60        // on prend la centaine
61        A := N div 100;
62        // on prend le reste
63        B := N mod 100;
64        if (A = 0) or (A = 1) then
65        begin
66          // si la centaine est 0 ou 1
67          // on calcule et on 'cent' est au singulier
68          if (B = 0) then
69            R := 'cent '
70          else
71            R := 'cent ' + Cent(B);
72        end
73        else
74        begin
75          // si la centaine est > 1
76          if (P = 0) then
77          begin
78            // si c'est la fin d'un nombre (P=0)
79            // on mets 'cents' au pluriel si pas d'unité sinon on met 'cent' au 
80  singulier
81            if (B = 0) then
82              R := Cent(A) + ' cents '
83            else
84              R := Cent(A) + ' cent ' + Cent(B);
85          end
86          else
87          begin
88            // si ce n'est pas la fin d'un nombre 'cent' est au singulier
89            if (B = 0) then
90              R := Cent(A) + ' cent '
91            else
92              R := Cent(A) + ' cent ' + Cent(B);
93          end;
94        end;
95      end
96      else
97      begin
98        // si le nombre est inférieur a 100 on le calcule directement
99        R := Cent(N);
100     end;
101     Result := R;
102   end;
103 
104   // Function principale
105 const
106   Z: array[0..3] of string =
107   ('', 'mille', 'million', 'milliard');
108 var
109   B, I: Integer;
110   R, M: string;
111 begin
112   R := '';
113   I := 0;
114   // On va décomposer en tranche de 1000 en partant de la droite
115   while (N > 0) do
116   begin
117     // prend une tranche (reste de la division par 1000)
118     B := N mod 1000;
119     // le pluriel est utilisé a partir des milliers
120     if (I = 0) then
121       M := ' '
122     else
123       M := 's ';
124     if I = 1 then
125     begin
126       // on calcule la tranche des milliers
127       // si le nombre de milliers est supérieur a 1 on ecrit le nombre et 'milles'
128       if (B > 1) then
129         R := Mille(B, I) + ' ' + Z[I] + M + R;
130       // sinon on éecrit 'mille' et pas 'un mille'
131       if (B = 1) then
132         R := Z[I] + ' ' + R;
133     end
134     else
135     begin
136       // on calcule les millions et suivants
137       // on mets un 's' au pluriel
138       if (B > 1) then
139         R := Mille(B, I) + ' ' + Z[I] + M + R;
140       // on n'en met pas au singulier
141       if (B = 1) then
142         R := Mille(B, I) + ' ' + Z[I] + ' ' + R;
143     end;
144     // on decale de 3 rangs vers la droite
145     N := N div 1000;
146     I := I + 1;
147   end;
148   if (R = '') then
149     R := 'zéro';
150   Result := R;
151 end;


			
Vote: How useful do you find this Article/Tip?
Bad Excellent
1 2 3 4 5 6 7 8 9 10

 

Advertisement
Share this page
Advertisement
Download from Google

Copyright © Mendozi Enterprises LLC