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 

Votre réponse

3 réponses

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

Dom

Merci dominique.stock 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

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
Merci
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
Merci
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.