Comment changer des chiffres en lettres dans une autre langue?

Résolu
jennybless Messages postés 38 Date d'inscription samedi 30 septembre 2006 Statut Membre Dernière intervention 10 août 2007 - 20 juin 2007 à 15:51
jennybless Messages postés 38 Date d'inscription samedi 30 septembre 2006 Statut Membre Dernière intervention 10 août 2007 - 21 juin 2007 à 17:39
Salut!


Les codes ci-aprés ne sont pas écrit par moi. Ils fonctionnent parfaitement. C'est juste une convertion des chiffres en lettres. Bref, cela se fait en Dinars (monnaie algérienne).


J'ai dû m'exercer sur ces codes en essayant de traduire par exemple les lettres en une autre langue. Mais je n'en arrive pas. Le mot "dinars" par exemple peut être converti en "Franc" par exemple (prière de voir dans les dits codes). Mais la traduction par exemple Cent Vingt et trois Centimes est impossible en anglais par exemple Hundred and Twenty Centimes.

Le probléme devra être là où s'est coloré en blue. Voilà tout et merci d'avance.

var
C, D, centimes, dinars : string;
car : array [1..3] of string;
I, Y, Z : integer;
begin
   S:=Edit1.text;
   If (S='') then // si la chaine S est vide Erreur
   begin
     Application.MessageBox('Veuillez Saisir une somme d''abord.', 'Erreur: Rien à convertir !',mb_IconError+mb_Ok);
     exit;
   end;
   i:=0;// connaitre la position du separateur decimale
   While not((S[i]='.') or(i > length(S))) do
    begin
     i:=i+1;
    end;
   C:=copy(S,i,1);
   if C='.' then // s'il y a un nombre decimale
    begin
     D:=copy(S,1,(i-1));
     dinars:=enLettres(StrToInt(d));
     centimes:=copy(S, i+1, (Length(S)-i));
     // remplir un tableau car par des chaines vides
     for y:=1 to 3 do     // Le nombre de Zero permit et de 3 maxi !
      begin
       car[y]:='';
      end;
     y:=0; // Y represente le nombre de Zero apres le separateur decimale
     z:=i+1;
     While (S[z]='0') or(z > length(S)) do
      begin
       y:=y+1;
       z:=z+1;
       car[y]:='Zero ';
      end;
     //s'il y a des Zero apres le separateur decimale
     if y>0 then
      // il faut l'ecrire -- maxi 3 nombres ont la valeur egal à 0, soit permit
      centimes:=' et '+car[1]+car[2]+car[3]+enLettres(StrToInt(centimes))+' Centimes'
      else // sinon il n'y a pas de zero à ecrire
        centimes:=' et'+enLettres(StrToInt(centimes))+' Centimes';
    label8.caption:=dinars+' Dinars Algerien'+centimes;
    end
   else // sinon lire la partie entiere
    begin
    D:=copy(S,1,(length(S)));
    dinars:=enLettres(StrToInt(D));
    label8.caption:=dinars+' Dinars Algérien';
    end; // else
end;


 

3 réponses

dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
20 juin 2007 à 16:59
Bonjour,
30 secondes de recherche sur google :
http://delphi.about.com/od/objectpascalide/a/curr2words.htm

Dom
3
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
21 juin 2007 à 09:09
As-tu trouvé ce que tu cherchais ?

Dom
0
jennybless Messages postés 38 Date d'inscription samedi 30 septembre 2006 Statut Membre Dernière intervention 10 août 2007
21 juin 2007 à 17:39
Dom!

C'est avec beaucoup de reconnaissance que je te redige ce message. Grand merci de m'avoir donné ce lien. Tu m'a vraiment porté secours.

JennyBless
0
Rejoignez-nous