Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pasar de numero a letras (https://www.clubdelphi.com/foros/showthread.php?t=25904)

omy 07-10-2005 02:47:20

Pasar de numero a letras
 
Hola, no es un problema, ya lo hice en c++ , me preguntaba si ya existe un control para hacer que un numero lo lo lea y me de en forma de letras

AGAG4 07-10-2005 02:52:31

Prueba esto....
 
Prueba el siguiente código, a mi me funciona sin problemas... Suerte
Código Delphi [-]
 function xIntToLletras(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
   {Inicializamos el string que contendrá las letras según el valor
   numérico}
   if numero=0 then Linea := 'CERO'
   else if numero<0 then Linea := 'MENOS '
        else if numero=1 then
             begin
               Linea := 'UN';
               xIntToLletras := Linea;
               exit
             end
             else if numero>1 then Linea := '';
   {Determinamos el Nº de millones, miles y unidades de numero en
   positivo}
   Numero   := Abs(Numero);
   Millones := numero div 1000000;
   Miles     := (numero - (Millones*1000000)) div 1000;
   Unidades  := numero - ((Millones*1000000)+(Miles*1000));
   {Vamos poniendo en el string las cadenas de los números(llamando
   a subfuncion)}
   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);
   xIntToLletras := Linea;
 end;

//function DameImpConLetra(Importe:String, Moneda:byte):String;
function DameImpConLetra(Importe:String; Moneda:byte):String;
var
  x:byte;
  Decim,Miles:String;
begin
  decim:='00';
  miles:='';
  for x:=1 to length(importe) do
    if importe[x]='.' then begin
      Miles:=copy(importe,1,x-1);
      Decim:=copy(importe,x+1,2);
    end;
  //Determinar el Tipo de Moneda
  if miles<>'' then begin
    if Moneda=1 then //Si es en PESOS Entonces
      result:='('+xIntToLletras(StrToInt(Miles))+' PESOS '+Decim+'/100 M.N.)'
    else             //Si es en DOLARES Entonces
      result:='('+xIntToLletras(StrToInt(Miles))+' DOLARES '+Decim+'/100 U.S.D.)';
  end else
    if Moneda=1 then //Si es en PESOS Entonces
      result:='('+xIntToLletras(StrToInt(importe))+' PESOS '+Decim+'/100 M.N.)'
    else             //Si es en DOLARES Entonces
      result:='('+xIntToLletras(StrToInt(importe))+' DOLARES '+Decim+'/100 U.S.D.)';
end;

Saludos....

Sotrono 07-10-2005 02:55:41

Si, esta en la seccion "Componentes" de la web.

Saludos...

omy 09-10-2005 06:10:11

Gracias...
 
Gracias, ya lo realize de las dos formas.... gracias....


La franja horaria es GMT +2. Ahora son las 20:10:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi