Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Sobre el componente ATexto 2.0

Hola,

Cuando el apartado de componentes del ClubDelphi estaba disponible había allí un componente de nombre ATexto y cuya versión era 2.0 y cuyo cometido era "traducir" números a su correspondientes "texto", esto es, ya sabéis:

Código:
85 = Ochenta y cinco

782 = Setecientos ochenta y dos

etc., etc.
Pues bien, me pregunto cómo es que no mantuve a buen recaudo dicho componente, y, os pregunto si lo tenéis alguno para hacérmelo llegar, bien por correo o bien adjuntándolo a este mismo Hilo.

Mi intención es guardarlo, como debe ser, y traducirlo a PHP. ¿Qué me decís? ¡Gracias de antemano!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 18-09-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Buscando en google, me encontre con esto:
http://delphi.garcia-cuervo.com/Recursos.htm

No te aseguro que sea la misma version.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 18-09-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
    Convertir una cifra numerica a cantidad en letra (15 -> "QUINCE") 

   Util para rellenar los impresos de giros de correos, por ejemplo 

      procedure TForm1.Button1Click(Sender: TObject);

      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;

      begin
        Label1.Caption:= xIntToLletras(StrToInt(Edit1.Text));
      end;

Yo tenía esta función guardada por ahí a ver si te sirve la idea.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 18-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Troi
Buscando en google, me encontre con esto:
http://delphi.garcia-cuervo.com/Recursos.htm

No te aseguro que sea la misma version.
Sí, justamente, ese es el componente y la versión que decía. Muchas gracias Troi, busqué también por Google, pero, no lo encontré...

Respecto de la función que propones Marcos, sí, la había visto en los Foros y, no diré yo que esté mal.

Miré por el componente ATexto 2.0 porque sabía que era muy curioso. Alguna vez incluso utilizé alguno similar, pero, no era ATexto.

Código Delphi [-]
unit ATexto;
{
-------------------------------------------------------------------------
ENTRADA : Número (Currency o Extended)
SALIDA  : Cadena de texto que representa el número
EJEMPLO : 38 -> treinta y ocho
-------------------------------------------------------------------------

FECHA   : 07 -abril-1998   [17:03]
VERSIÓN : 1.2
AUTOR   : Antoni Aloy López
E-MAIL  : tonialoy @ yahoo.com
-------------------------------------------------------------
FECHA   : 09 -noviembre-2000   [21:34]
VERSIÓN : 2.0
AUTOR   : Savierhs López Arteaga
E-MAIL  : savierhs @ hotmail.com

-------------------------------------------------------------------------
HISTORIA:

Versión 0.99 -> Sólo funciona hasta 99 millones

versión 1.0  -> Se amplía el funcionamiento a las centenas de millón
        Se corrige un error en las centenas de millón que
        hacía que saliesen en femenino.

versión 1.1  -> Se corrige un error que hacía que las decenas y centenas
        de millon salgan en femenino cuando acaban en uno.

versión 1.2  -> Se actualiza el componente para que admita valores decimales
        y dé la salida en euros.
        Se ha añadido una opción para determinar el separador de
        centimos, y una nueva propiedad que nos da los céntimos
        Se corrigen algunos acentos.
        ATENCIÓN: Con esta versión cambio el e-mail de consultas a tonialoy @ yahoo.com

versión 2.0  -> Ahora traduce valores menores a 10 Trillones.
                Se optimizan todas las rutinas de conversión de numeros.
                Se reemplazan algunas otras rutinas.
                Se agrega una propiedad que permite indicar el tipo de
                moneda en la salida Ej: euros o pesetas.
                Se agrega una propiedad que permite indicar el tipo de
                centimos o centavos en la salida Ej: ctvs. o centimos.
                Se renombra la propiedad "Euros" por "Masculino", la
                cual decide sobre las terminaciones de la descripción.
                Se corrigen otros acentos.
                NOTA: Tambien puede enviar cualquier consulta al
                      siguiente E-Mail: savierhs @ hotmail.com

--------------------------------------------------------------------------
Este componente se pone a dominio público, aunque me reservo el derecho
sobre su autoría. Es decir, puede utilizarse y modificarse libremente
siempre y cuando se me cite como autor del componente original.

Como siempre, no existen garantías de que el componente funcione en todas
las circunstancias, úsalo a tu cuenta y riesgo.

Comentarios, albanzas y agradecimiento enterno,... serán bien recibidos.
--------------------------------------------------------------------------
ATENCIÓN:
  Si ya tiene instalado este componente, desinstalelo antes de colocar
  la nueva versión
--------------------------------------------------------------------------
}

Bueno, muchas gracias a los dos, ahora a traducirlo a PHP... ¡qué pronto lo he dicho!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 18-09-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por si acaso te sirve, yo uso esta función desde hace años, no sé de quién es, la utilizo tal y como me la pasaron, creo que ni la toqué y nunca he tenido problema con ella.
Tiene la particularidad de traducir a castellano y catalán, por lo que es fácilmente adaptable para otros idiomas.
Archivos Adjuntos
Tipo de Archivo: zip Numero2Letras.pas.zip (2,2 KB, 147 visitas)
Responder Con Cita
  #6  
Antiguo 18-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Te lo agradezco Casimiro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 29-12-2007
Franksxs Franksxs is offline
Miembro
 
Registrado: feb 2007
Posts: 11
Poder: 0
Franksxs Va por buen camino
HOla, El codigo que proporciono marcoszorrilla esta muy bueno y se le agradece la ayuda; pero solo hay un problema.

no convierte decimales y necesito que convierta decimales, alguno de ustedes podria pasarme un codigo que convierta tambien decimales?

gracias por su atención
Responder Con Cita
  #8  
Antiguo 29-12-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El código recuerdo haberlo modificado con la entrada del Euro, finalmente lo he encontrado:

Código Delphi [-]
function IntToLetras(Numerosouble):String;

        function xIntToLetras(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,numero: Longint;
         Linea : String;
         entero,decimal:variant;
         n1,n2: Double;

      begin
      entero:=Int(numeros);
      decimal:=Abs(frac(numeros) * 100);
      numero:=entero;
        {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';
                    //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 + xIntToLetras(Millones)
                                         + ' MILLONES ';

        if Miles =1 then Linea:= Linea + ' MIL '
        else if Miles>1 then Linea := Linea + xIntToLetras(Miles)+
                                      ' MIL ';

        if Unidades >0 then
        Linea := Linea + xIntToLetras(Unidades);

         //Nuevo para decimales
          numero:=decimal;
          Linea:=Linea +' Euros';

      if numero > 0 then
      begin
      Linea:=Linea +' y ';

         if numero=1 then
                  begin
                    Linea :=Linea + 'UN';
                  end
                  else if numero>1 then Linea := 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 + xIntToLetras(Millones)
                                         + ' MILLONES ';

        if Miles =1 then Linea:= Linea + ' MIL '
        else if Miles>1 then Linea := Linea + xIntToLetras(Miles)+
                                      ' MIL ';

        if Unidades >0 then
        Linea := Linea + xIntToLetras(Unidades);

        linea:=Linea+' cents';
     end;

        IntToletras:=Linea;
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 20-01-2008 a las 10:33:04.
Responder Con Cita
  #9  
Antiguo 29-12-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Este hilo es muy viejo, pero se reactivo por alguna razón.
No se si sera la versión 2, pero este es el que me pasaste Dec. en algún momento.
Saludos

Última edición por Caral fecha: 24-01-2008 a las 22:35:13.
Responder Con Cita
  #10  
Antiguo 29-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; creo que es el mismo que se encuentra en el TeraWiki.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 20-01-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
marcoszorrilla gracias!!! con respecto al cod. el primero me funciono de perfectamente,, pero el segundo que generastes para los decimales no me funciona en la parte de las variables cuando se cren,
var
Millones,Miles,Unidades,n: LongInt;
Linea : String;
entero,decimal:variant;

n1,n2ouble; --> esta variable me dice: undeclared identifier: 'ouble'

te agradeceria la ayuda!!!

saludos!!!
gracias!!!
Responder Con Cita
  #12  
Antiguo 20-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pareciera que es una errata, y, que, donde dice:

Código Delphi [-]
n1,n2ouble;

Debe decir:

Código Delphi [-]
n1,n2: double;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 20-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Ya lo he arreglado, pero no era ni error ni errata, ya me ha pasado otra vez, es el "parser", que se ve no le gusta la combinación esa:

Código Delphi [-]
      var
         Millones,Miles,Unidades,numero: Longint;
         Linea : String;
         entero,decimal:variant;
         n1,n2ouble;


Código Delphi [-]
      var
         Millones,Miles,Unidades,numero: Longint;
         Linea : String;
         entero,decimal:variant;
         n1,n2: Double;


La primera y la segunda son exactamente iguales, pero en la primera no hay un espacio entre los dos puntos y Double.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #14  
Antiguo 20-01-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Llego tarde, pero en trucomanía hay una función que hace exactamente lo mismo (no sé si con decimales funciona).

Salu2.
Responder Con Cita
  #15  
Antiguo 20-01-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
gracias a todos.. bueno ya modifique la variable como em dijeron!!! y la verifico perfectamente pero en la parte de

xIntToLetras:=Linea;

me dice lo siguiente:

not enough actual parameters

de verdad gracias a todos y disculpen la molestia...
Responder Con Cita
  #16  
Antiguo 20-01-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
bueno otra cosa quisiera saber si se puede complementar una laber en otro es decir, por lo menos cuando da el resultado traducido a letras!!! tener un limite y continuar en la linea de abajo:

1.254.525,58
un millon docientos cincuenta y cuatro mil quinientos veinticinco con cincuenta y ocho centimos...


a

1.254.525,58
un millon docientos cincuenta y cuatro mil quinientos veinticinco
con cincuenta y ocho centimos...



Responder Con Cita
  #17  
Antiguo 20-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
La verdad no veo como hacerlo en un label, creo que seria mejor usar un memo.
Saludos
Responder Con Cita
  #18  
Antiguo 21-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Estableciendo el Autosize a false, wordwrap a true del label, obtendrás ese comportamiento.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Componente Atexto vientos Varios 8 13-10-2010 07:01:35
Consulta sobre el componente ADOQuery s_e_montes Varios 2 02-02-2006 20:08:36
Consulta sobre componente Enan0 Varios 6 17-11-2005 15:49:55
ayuda sobre componente database srangel Firebird e Interbase 1 28-07-2005 22:45:31
Consulta sobre el componente TQRexp DanielAlexander Impresión 11 27-06-2003 23:01:28


La franja horaria es GMT +2. Ahora son las 17:52:12.


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
Copyright 1996-2007 Club Delphi