Comment changer des chiffres en lettres dans une autre langue? [Résolu]

jennybless 38 Messages postés samedi 30 septembre 2006Date d'inscription 10 août 2007 Dernière intervention - 20 juin 2007 à 15:51 - Dernière réponse : jennybless 38 Messages postés samedi 30 septembre 2006Date d'inscription 10 août 2007 Dernière intervention
- 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;


 
Afficher la suite 

3 réponses

Répondre au sujet
dominique.stock 446 Messages postés vendredi 7 novembre 2003Date d'inscription 8 octobre 2008 Dernière intervention - 20 juin 2007 à 16:59
+3
Utile
Bonjour,
30 secondes de recherche sur google :
http://delphi.about.com/od/objectpascalide/a/curr2words.htm

Dom
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dominique.stock
dominique.stock 446 Messages postés vendredi 7 novembre 2003Date d'inscription 8 octobre 2008 Dernière intervention - 21 juin 2007 à 09:09
0
Utile
As-tu trouvé ce que tu cherchais ?

Dom
Commenter la réponse de dominique.stock
jennybless 38 Messages postés samedi 30 septembre 2006Date d'inscription 10 août 2007 Dernière intervention - 21 juin 2007 à 17:39
0
Utile
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
Commenter la réponse de jennybless

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.