تحويل الأعداد إلى كلمات

achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: كانون الثاني 09, 2009, 08:00:12 مسائاً




برنامج تحويل الأعداد إلى كلمات بالعربي
*الدالة التي تقوم  بالتحويل*

 كود:
function arb_nombre(numero:longint):string;
const
     space   =' ';
     et      =' و ';
     mille   =' ألف ';
     milles  =' آلاف ';


function dixaine(n:integer):string;
var chm,rs:string;
begin
     case n of
         1:begin result:='واحد';  exit; end;
         2:begin result:='إثنان';    exit;End;
         3:begin result:='ثلاثة';    exit;end;
         4:begin result:='أربعة';      exit;End;
         5:begin result:='خمسة';     exit;End;
         6:begin result:='ستة';      exit;End;
         7:begin result:='سبعة';     exit;End;
         8:begin result:='ثمانية';   exit;End;
         9:begin result:='تسعة';     exit;End;
        10:begin result:='عشرة';    exit;End;
        11:begin result:='إحدى عشرة'; exit;End;
        12:begin result:='إثنتا عشر'; exit;End;
        13:begin result:='ثلاثة عشر';exit;End;
        14:begin result:='أربعة عشر'; exit;End;
        15:begin result:='خمسة عشر';   exit;End;
        16:begin result:='ستة عشر';    exit;End;
        17:begin result:='سبعة عشر';   exit;End;
        18:begin result:='ثمانية عشر'; exit;End;
        19:begin result:='تسعة عشر';  exit;End;
        20:begin result:='عشرون' ;    exit;End;
        30:begin result:='ثلاثون';    exit;End;
        40:begin result:='أربعون';    exit;End;
        50:begin result:='خمسون';     exit;End;
        60:begin result:='ستون';     exit;End;
        70:begin result:='سبعون';     exit;End;
        80:begin result:='ثمانون';    exit;End;
        90:begin result:='تسعون';    exit;End;
        100:begin result:='مائة';   exit;End;
     else
     begin
          chm:=inttostr(n);
          case chm[1] of
           '2':rs:='عشرون' ;
           '3':rs:='ثلاثون';
           '4':rs:='أربعون';
           '5':rs:='خمسون';
           '6':rs:='ستون';
           '7':rs:='سبعون';
           '8':rs:='ثمانون';
           '9':rs:='تسعون';
          end;
     end;
     end;//end case
      case chm[2] of
         '1':result:='واحد'  +et+rs;
         '2':result:='إثنان' +et+rs;
         '3':result:='ثلاثة'  +et+rs;
         '4':result:='أربعة' +et+rs;
         '5':result:='خمسة'   +et+rs ;
         '6':result:='ستة'   +et+rs;
         '7':result:='سبعة'  +et+rs;
         '8':result:='ثمانية' +et+rs;
         '9':result:='تسعة'  +et+rs;
      end;
end;
//-------------------------------------------
function centaine(nn:integer):string;
var nmod,ndiv : integer;
begin
  if nn=100 then begin result:='مائة'; exit;end;
  if nn=0 then begin result:=''; exit; end;

   if nn<100 then
   begin
       result:=dixaine(nn);
   end;
     nmod:=nn mod 100;
     ndiv:=nn div 100;
     case nn of
       200:begin result:='ماتان' ;    exit;  end;
       300:begin result:='ثلاث مائة';  exit;  end;
       400:begin result:='أربع مائة'; exit;  end;
       500:begin result:='خمس مائة';   exit;  end;
       600:begin result:='ست مائة';   exit;  end;
       700:begin result:='سبع مائة';  exit;  end;
       800:begin result:='ثمان مائة';  exit;  end;
       900:begin result:='تسع مائة';  exit;  end;
     end;
     case ndiv of
          1: begin result:='مائة'+ et + dixaine(nmod);     exit;  end;
          2:begin result:='ماتان'+ et + dixaine(nmod);     exit;  end;
          3:begin result:='ثلاث مائة '+ et + dixaine(nmod) ;  exit;  end;
          4:begin result:='أربع مائة' + et + dixaine(nmod); exit;  end;
          5:begin result:='خمس مائة'+ et + dixaine(nmod) ;   exit;  end;
          6:begin result:='ست مائة' + et + dixaine(nmod);   exit;  end;
          7:begin result:='سبع مائة' + et + dixaine(nmod);  exit;  end;
          8:begin result:='ثمان مائة'+ et + dixaine(nmod) ;  exit;  end;
          9:begin result:='تسع مائة' + et + dixaine(nmod);  exit;  end;
     end;
end;

//---------------------------------------------------------------

function mil(x:integer):string;
var xmod,xdiv : integer;
    xch:string;
    mill,wa:string;

begin
     case x of
        1000:begin  result:=mille;       exit; end;
        2000:begin  result:='ألفين';      exit;end;
        3000: begin result:='ثلاثة آلاف';  exit end;
        4000: begin result:='أربعة آلاف'; exit;end;
        5000: begin result:='خمسة آلاف';   exit;end;
        6000: begin result:='ستة آلاف';   exit;end;
        7000: begin result:='سبعة آلاف';  exit;end;
        8000: begin result:='ثمانية آلاف'; exit;end;
        9000: begin result:='تسعة آلاف';  exit;end;
    end;
    xmod := x mod 1000;
    xdiv := x div 1000;
    if xmod =0 then wa:='' else wa:=et;
    if xdiv in [3..9] then mill:=' آلاف ' else mill:=' ألف '  ;
    if xdiv =0 then begin  mill:=''; wa:='';end;
    if xdiv = 1 then begin  result:='ألف ' + wa + centaine(xmod); exit; end;
    if xdiv = 2 then begin  result:='ألفين ' + wa + centaine(xmod); exit; end;

    result := centaine(xdiv)+mill+wa+centaine(xmod);
end;
//==========================================================================
function million(xxx:integer):string;
 var xmdiv,xmmod:integer;
     wa,xmillion:string;

 begin
      xmdiv := xxx div 1000000;
      xmmod := xxx mod 1000000;
      xmillion:=' مليون ';
      if xmdiv =0 then begin result := mil(xxx); exit; end;
      if xmmod =0 then wa:=' ' else wa:=et;
      if xmdiv = 1 then begin result := ' مليون '+ wa+mil(xmmod); exit; end;
      if xmdiv = 2 then begin result := ' مليونين '+wa+  mil  (xmmod); exit; end;
      if xmdiv in [3..9] then xmillion:='  ملايين ' else xmillion:= ' مليون ' ;
      result:=arb_nombre(xmdiv)+xmillion+et+ mil(xmmod);
 end;
 ///===== debut du function principale ==================
begin
    if numero=0 then result:='صفر' else
    if numero < 0 then result:= '' else
    begin
         if numero<=100 then
         begin
            result:=dixaine(numero); exit;
         end
         else
            begin
              if numero <=999 then begin result:=centaine(numero);exit; end
              else
                 begin
                     if numero <=999999 then  begin result:=mil(numero);exit end
                     else
                     begin
                         result:=million(numero); exit;
                     end;
                 end;
            end;
    end;

end;
  //-------------------------------------------------------------------------
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.text ='' then exit;
label1.caption:=arb_nombre(strtoint(edit1.text));

end;
    (**Fin fonction**)
 
ويمكن تحميل البرنامج مع السورس من هنا

http://ifile.it/jvrhbqi




Ssoft

  • Hero Member
  • *****
    • مشاركة: 1410
    • مشاهدة الملف الشخصي
    • http://sabeur-academy.com
    • البريد الالكتروني
رد #1 في: كانون الثاني 10, 2009, 12:01:40 مسائاً
thank'sssssssssssss


lucky girl

  • Hero Member
  • *****
    • مشاركة: 1151
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #2 في: كانون الثاني 12, 2009, 05:43:30 مسائاً
merciiiiiiiiii bcp bcp achraf


chiwawa_27

  • Newbie
  • *
    • مشاركة: 29
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #3 في: كانون الثاني 13, 2009, 12:00:54 مسائاً
merci


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #4 في: كانون الثاني 14, 2009, 03:09:13 مسائاً
لا شكرا على واجب شكرا لمرورك