Convert IntToLletras

 



Function IntToLletras ( Numero : LongInt ) : String ;

 

   Function xxIntToLletras ( Valor : LongInt ) : String ;

   Const

      aUnidad  : Array[ 1..15 ] Of String =

         ( 'UN' , 'DOS' , 'TRES' , 'CUATRO' , 'CINCO' , 'SEIS' ,

         'SIETE' , 'OCHO' , 'NUEVE' , 'DIEZ' , 'ONCE' , 'DOCE' ,

         'TRECE' , 'CATORCE' , 'QUINCE' ) ;

      aCentena : Array[ 1..9 ] Of String =

         ( 'CIENTO' , 'DOSCIENTOS' , 'TRESCIENTOS' ,

         'CUATROCIENTOS' , 'QUINIENTOS' , 'SEISCIENTOS' ,

         'SETECIENTOS' , 'OCHOCIENTOS' , 'NOVECIENTOS' ) ;

      aDecena  : Array[ 1..9 ] Of String =

         ( 'DIECI' , 'VEINTI' , 'TREINTA' , 'CUARENTA' , 'CINCUENTA' ,

         'SESENTA' , 'SETENTA' , 'OCHENTA' , 'NOVENTA' ) ;

   Var

      Centena , Decena , Unidad , Doble : LongInt ;

      Linea    : String ;

   Begin

      If valor = 100 Then

         Linea := ' CIEN '

      Else

      Begin

         Linea := '' ;

         Centena := Valor Div 100 ;

         Doble := Valor - ( Centena * 100 ) ;

         Decena := ( Valor Div 10 ) - ( Centena * 10 ) ;

         Unidad := Valor - ( Decena * 10 ) - ( Centena * 100 ) ;

 

         If Centena > 0 Then Linea := Linea + Acentena[ centena ] + ' ' ;

 

         If Doble > 0 Then

         Begin

            If Doble = 20 Then

               Linea := Linea + ' VEINTE '

            Else

            Begin

               If doble < 16 Then

                  Linea := Linea + aUnidad[ Doble ]

               Else

               Begin

                  Linea := Linea + ' ' + Adecena[ Decena ] ;

                  If ( Decena > 2 ) And ( Unidad <> 0 ) Then Linea := Linea + ' Y ' ;

                  If Unidad > 0 Then Linea := Linea + aUnidad[ Unidad ] ;

               End ;

            End ;

         End ;

      End ;

      Result := Linea ;

   End ;

 

Var

   Millones , Miles , Unidades : Longint ;

   Linea       : String ;

Begin

   If numero = 0 Then

      Linea := 'CERO'

   Else

      If numero < 0 Then

         Linea := 'MENOS '

      Else

         If numero = 1 Then

         Begin

            Linea := 'UN' ;

            IntToLletras := Linea ;

            exit

         End

         Else

            If numero > 1 Then Linea := '' ;

 

   Numero := Abs ( Numero ) ;

   Millones := numero Div 1000000 ;

   Miles := ( numero - ( Millones * 1000000 ) ) Div 1000 ;

   Unidades := numero - ( ( Millones * 1000000 ) + ( Miles * 1000 ) ) ;

 

   If Millones = 1 Then

      Linea := Linea + ' UN MILLON '

   Else

      If Millones > 1 Then

         Linea := Linea + xxIntToLletras ( Millones )

            + ' MILLONES ' ;

 

   If Miles = 1 Then

      Linea := Linea + ' MIL '

   Else

      If Miles > 1 Then

         Linea := Linea + xxIntToLletras ( Miles ) +

            ' MIL ' ;

 

   If Unidades > 0 Then Linea := Linea + xxIntToLletras ( Unidades ) ;

 

   IntToLletras := Linea ;

End ;

 

            Example :

       

                Caption := IntToLletras ( StrToInt ( Edit1.Text ) ) ;

 

Back Home