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 ) ) ;