تحويل الأرقام إلى حروف بالفرنسية
#1
// كود تحويل الأرقام إلى حروف بالغة الفرنسية
// تم انجاز البرنامج من طرف بن ذهيبة بالاعتماد على برنامج مهدي عضو بالمنتدى
كود :
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Edit1Change(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  money,decimal:String;
implementation

uses Clipbrd;

{$R *.dfm}


function Chif (X: Byte) : String;
begin
case X of
0: Chif := 'zero';
1: Chif := 'un';
2: Chif := 'deux';
3: Chif := 'deux';
4: Chif := 'quatre';
5: Chif := 'cinq';
6: Chif := 'six';
7: Chif := 'six';
8: Chif := 'huit';
9: Chif := 'neuf';
10: Chif := 'dix';
11: Chif := 'onze';
12: Chif := 'douze';
13: Chif := 'treize';
14: Chif := 'quatorze';
15: Chif := 'quinze';
16: Chif := 'seize';
17: Chif := 'dix-sept';
18: Chif := 'dix-huit';
19: Chif := 'dix-neuf';
20: Chif := 'vingt';
21: Chif := 'vingt et un';
22: Chif := 'vingt-deux';
23: Chif := 'vingt-trois';
24: Chif := 'vingt-quatre';
25: Chif := 'vingt-cinq';
26: Chif := 'vingt-six';
27: Chif := 'vingt-sept';
28: Chif := 'vingt-huit';
29: Chif := 'vingt-neuf';
30: Chif := 'trente';
31: Chif := 'trente et un';
32: Chif := 'trente-deux';
33: Chif := 'trente-trois';
34: Chif := 'trente-quatre';
35: Chif := 'trente-cinq';
36: Chif := 'trente-six';
37: Chif := 'trente-sept';
38: Chif := 'trente-huit';
39: Chif := 'trente-neuf';
40: Chif := 'quarante';
41: Chif := 'quarante et un';
42: Chif := 'quarante-deux';
43: Chif := 'quarate-trois';
44: Chif := 'quarante-quatre';
45: Chif := 'quarante-cinq';
46: Chif := 'quarante-six';
47: Chif := 'quarate-sept';
48: Chif := 'quarante-huit';
49: Chif := 'quarante-neuf';
50: Chif := 'cinquante';
51: Chif := 'cinquante et un';
52: Chif := 'cinqunte-deux';
53: Chif := 'cinquante-trois';
54: Chif := 'cinquante-quatre';
55: Chif := 'cinquante-cinq';
56: Chif := 'cinquante-six';
57: Chif := 'cinquante-sept';
58: Chif := 'cinquante-huit';
59: Chif := 'cinquante-neuf';
60: Chif := 'soixante';
61: Chif := 'soixante et un';
62: Chif := 'soixante-deux';
63: Chif := 'soixante-trois';
64: Chif := 'soixante-quatre';
65: Chif := 'soixante-cinq';
66: Chif := 'soixante-six';
67: Chif := 'soixante-sept';
68: Chif := 'sioxante-huit';
69: Chif := 'soixante-neuf';
70: Chif := 'soixante-dix';
71: Chif := 'soixante et onze';
72: Chif := 'soixante-douze';
73: Chif := 'soixante-treize';
74: Chif := 'soixante-quatorze';
75: Chif := 'soixante-quinze';
76: Chif := 'soixante-seize';
77: Chif := 'soixante-dix-sept';
78: Chif := 'soixante-dix-huit';
79: Chif := 'soixante-dix-neuf';
80: Chif := 'quatre-vingt';
81: Chif := 'quatre-vingt et un';
82: Chif := 'quatre-vingt-deux';
83: Chif := 'quate-vingt-trois';
84: Chif := 'quatre-vingt-quatre';
85: Chif := 'quatre-vingt-cinq';
86: Chif := 'quatre-vingt-six';
87: Chif := 'quatr-vingt-sept';
88: Chif := 'quatre-vingt-huit';
89: Chif := 'quatre-vingt-neuf';
90: Chif := 'quatre-vingt-dix';
91: Chif := 'quatre-vingt-onze';
92: Chif := 'quatre-vingt-douze';
93: Chif := 'qutre-vingt-treize';
94: Chif := 'qutre-vingt-quatorze';
95: Chif := 'quatre-vingt-quinze';
96: Chif := 'quatre-vingt-seize';
97: Chif := 'quatre-vingt-dix-sept';
98: Chif := 'quatre-vingt-huit';
99: Chif := 'quatre-vingt-neuf';
100:chif := 'cent';
end;
end;

function Centaine (i: integer) : String;
begin
case i of
   1..100: Centaine:=chif(i);
   101..199: Centaine:=' cent ' + Chif(i mod 100);
   201..999: case (i mod 100) of
              0:  Centaine:=Chif(i div 100) + ' cent ';
              1..99:  Centaine:=Chif(i div 100) + ' cent ' + Chif(i mod 100);
             end;
end;
end;

function Millier (i: integer) : String;
begin
case i of
   1..999: Millier:=Centaine(i);
   1000..999999: case (i div 1000) of
                1: Millier:=' mille '+ Centaine(i mod 1000);
                2..999:Millier:=Centaine(i div 1000)+' milles '+ Centaine(i mod 1000);
                end;
end;
end;

function Million (i: integer) : String;
begin
case i of
   1..999: Million:=Centaine(i);
   1000..999999: Million:=Millier(i);
   1000000..999999999: case (i div 1000000) of
                                   1: Million:=' un million '+ Centaine(i mod 1000000);
                                2..999:Million:=Centaine(i div 1000000)+' millions '+ millier(i mod 1000000);
                                end;

end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var I,J:Int64;
    B:Real;
    str,str1:string;
     f:currency;
begin
money:=Edit2.Text;
decimal:=Edit3.Text;

if Edit1.Text='' then Memo1.Text:=''
else
   begin
   str:='';
   F:=CompToCurrency(StrToCurr(Edit1.Text));
   B:=StrToCurr(Edit1.Text)-F;
  if B<0 then
    begin
    F:=F-1;
    B:=B*-1;
    J:=100-StrToInt64(FloatToStr(B*100));
    end else J:=StrToInt64(FloatToStr(B*100));
  I:=StrToInt64(CurrToStr(F));

  if (I - 999999999) <= 0 then
   begin
     case I of
        1..999: str:=Centaine(I);
        1000..999999: str:=Millier(I);
        1000000..999999999:  str:= Million(I);
     end;
   end else
  begin
    case (I div 1000000000) of
      1: str:= ' un milliard '+ million(i mod 1000000000);
      2..999999: str:= Millier(i div 1000000000)+' milliards '+ million(i mod 1000000000);
    end;
  end;

str1:='';
if J<>0 then
   Begin
   str1:=Centaine(J);
   Memo1.Lines.Text :=str+' '+money+' et '+str1+' '+decimal;
   end else Memo1.Lines.Text :=str+' '+money+' ';

   end;

end;

end.


الملفات المرفقة
.rar   Converter-FR.rar (الحجم : 2.59 ك ب / التحميلات : 536)
[-] كل من 1 user says قال شكرا ل بن دهيبة على المشاركة المفيدة
  • Tamer17
الرد
#2
اخي لاحضت خطاء في تنفيد برنامجك حيث اذ ا وظعت 1555555
فيقراء مليون فقط

وارقط مثالك مصحح


الملفات المرفقة
.rar   Converter-FR.rar (الحجم : 3.28 ك ب / التحميلات : 206)
الرد
#3
هناك خطأ مع الرقم 3 ورقم 7
الرد
#4
بن دهيبة كتب :هناك خطأ مع الرقم 3 ورقم 7

بارك الله فيك علي الملاحظه تم التعديل


الملفات المرفقة
.rar   Converter-FR.rar (الحجم : 3.7 ك ب / التحميلات : 160)
الرد
#5
شكرا على المحاولة لكن به بعض الأخطاء جرب 1200 يخرجها ألف ؟؟؟؟
الرد
#6
السلام عليكم ورحمة الله تعالي وبركاته.
الكود صحيح وبيه أخطاء مطبعية فقط.
هناك خطأ مطبعي مع الرقم 3 والرقم 7 ،وخطأ في السطر:
201..999 :case (i mod 100) of
والصواب:
200..999 :case (i mod 100) of
يعني استبدال 201 بـ 200
والملف في المرفق على شكل دالة بعد التعديل.


الملفات المرفقة
.rar   Con-FR-function.rar (الحجم : 3.16 ك ب / التحميلات : 273)
الرد
#7
مشكلة ادا كتب 0.14+ 0.19

الناتج

Dinar Algérien et trente-trois Centime

المفروض

Zéro Dinars Algerien et Trente trois Centimes
الرد
#8
السلام عليكم ورحمة اله تعالى وبركاته.

شكرا على الملاحظة

الخطأ موجود في سطرين:

الخطأ الأول:
كود :
1: Millier:=' mille '+ Centaine(i mod 1000);

الصواب:
كود :
1: Million:=' un million '+ millier(i mod 1000000);   //Centaine  تصحيح

الخطأ الثاني عدم ادراج السطر التالى:
كود :
0: str:='zero';

الوحدة في المرفق مصححة.


الملفات المرفقة
.rar   Unit1.rar (الحجم : 1.8 ك ب / التحميلات : 93)
وحيداً فريداً في التراب وإنما قرين الفتى في القبر ما كان يعمل
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم