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 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Cambiar numeros a cantidad con letra

Saludos.

Quiza ya se haya hablado varias veces de este tema pero tengo un pequeño problema que me esta dando dolor de cabeza, tengo este codigo (mostrado en la parte de abajo) el cual esta funcionando correctamente hasta 999,999.99, tengo la necesidad de ampliarlo hasta 9 millones lo cual he tenido algunos problemas para esto. Cuando lo ejecuto marca el siguiente error "EconvertError with message".
Alguien me puede ayudar con esto, se los agradeceria mucho.

Tal y como esta hasta el momento funciona hasta 999,999.99, cuando quito la parte comentada en el codigo produce el error.

Código Delphi [-]
unit Extens;
interface
function extenso (valor: real): string;
implementation
uses
  SysUtils,  Dialogs;
function extenso (valor: real): string;
var
 Centavos, Centena, Millar, Millon,Texto, msg: string;
 const
  Unidades: array[1..9] of string = ('Un','Dos', 'Tres', 'Cuatro', 'Cinco',
                                    'Seis', 'Siete', 'Ocho', 'Nueve');
  Diez: array[1..9] of string = ('Once', 'Doce', 'Trece', 'Catorce', 'Quince',
                               'Dieciseis', 'Diecisiete', 'Dieciocho', 'Diecinueve');
  Decenas: array[1..9] of string = ('Diez', 'Veinte', 'Treinta', 'Cuarenta',
                                   'Cincuenta', 'Sesenta', 'Setenta',
                                   'Ochenta', 'Noventa');
  Centenas: array[1..9] of string = ('Ciento', 'Doscientos', 'Trescientos',
                                    'Cuatrocientos', 'Quinientos', 'Seiscientos',
                                    'Setecientos', 'Ochocientos', 'Novecientos');
  Millones: array[1..9] of string = ('Un ','Dos ', 'Tres ', 'Cuatro ', 'Cinco ',
                                    'Seis ', 'Siete ', 'Ocho ', 'Nueve ');
function ifs(Expresado: Boolean; CasoVerdadero, CasoFalso: String): String;
  begin
    if Expresado then
      Result:=CasoVerdadero
    else
      Result:=CasoFalso;
  end;
 function MiniExtenso (tres: string): string;
  var
    Unidad, Decena, Centena, Millones: string;
  begin
    Unidad:='';
    Decena:='';
    Centena:='';
    Millones:='';
   if (tres[2]='1') and (tres[3]<>'0') then
    begin
      Unidad:=Diez[strtoint(tres[3])];
      Decena:='';
    end
    else
    begin
      if tres[2]<>'0' then Decena:=Decenas[strtoint(tres[2])];
      if tres[3]<>'0' then Unidad:=Unidades[strtoint(tres[3])];
//      if tres[4]<>'0' then Unidad:=Unidades[strtoint(tres[4])];
    end;
    if (tres[1]='1') and (Unidad='') and (Decena='') and (Millones='') then
      Centena:='Cien'
    else
      if tres[1]<>'0' then
        Centena:=Centenas[strtoint(tres[1])]
      else
        Centena:='';
        Result:=
//         Millones + ifs((Millones<>'') and ((Centena<>'') or (Decena<>'')), ' ', '')
         Centena + ifs((Centena<>'')  and ((Decena<>'')  or (Unidad<>'')), ' ', '')
         + Decena + ifs((Decena<>'')   and (Unidad<>''),' y ', '') + Unidad;
    end;
begin
  if (valor>9999999.99) or (valor<0) then
   begin
    msg:='El Valor esta fuera del rango permitido';
    msg:=msg+'El numero debe ser menor que: 9.999.999.99';
    showmessage(msg);
    Result:='';
    exit;
   end;
 if valor=0 then
  begin
    Result:='';
    Exit;
  end;
   Texto:=formatfloat('0000000.00',valor);
   Millon:=MiniExtenso(copy(Texto, 1,3));
   Millar:=MiniExtenso(Copy(Texto,2,3));
   Centena:=MiniExtenso(Copy(Texto,5,3));
   Centavos:=MiniExtenso('0'+Copy(Texto,9,2));
   Result:=Millar;
 if Millon<>'' then
   if copy(texto,1,3)='1' then
     Result:=Result+' Un Millon'
   else
     Result:=Result+' Millones ';
 if Millar<>'' then
   if copy(texto,4,3)='000' then
     Result:=Result+' Mil pesos'
   else
     Result:=Result+' Mil ';
 if (Millar+Centena <>'') then
     Result:=Result+Centena;
 if (Millar='') and (copy(texto,4,3)='001') then
     Result:=Result+' Peso'
   else
    if (copy(texto,4,3)<>'000') then
      Result:=Result+' Pesos ';
 
{ if Centavos='' then
    begin
      Result:=Result+'.';
      Exit;
    end
    else
    begin
      if Millar+Centena='' then
        Result:=Centavos
      else
        Result:=Result+' con '+Centavos;
    if (copy(texto,8,2)='01') and (Centavos<>'') then
      Result:=Result+' Centavos.'
    else
    Result:=Result+' Centavos.';
  end;}
end;
end.
Responder Con Cita
  #2  
Antiguo 21-05-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Te recomiendo que cheques los enlaces que se muestran en la parte inferior de este hilo, ahí donde dice: Temas Similares.

También si haces una búsqueda por ATexto podrás encontrar información que te sirva...


Saludos...
Responder Con Cita
  #3  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, el componente ATexto se encuentra en el FTP del club,

http://www.terawiki.clubdelphi.com/a...tes/ATexto.zip

Y Concordando con maeyanes, con una pequeña busqueda por el foro lo hubieses encontrado.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Gracias por responder, anteriormente lo habia buscado en el foro y encontre varios temas similares interesantes, descargue Atexto pero no he logrado instalarlo, me podrian explicar de forma rapida como cargar el archivo??

Saludos
Responder Con Cita
  #5  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Pues es tan facil instalar como cualquier otro componente común, a traves de la solapa components/install component, luego buscas el .PAS y lo instalas.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 21-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
http://www.clubdelphi.com/trucos/ind...ll=0&scrollb=0

http://www.clubdelphi.com/foros/show...5&postcount=15
__________________


Última edición por ContraVeneno fecha: 21-05-2008 a las 18:35:49.
Responder Con Cita
  #7  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
No he logrado instalar Atexto ya que no tengo la opcion de components/install component, estoy trabajando actualmente con la version Code Gear win32, he intentado instalar con import component pero solo me permite agregar 3 tipos, a) Type Library. b) ActiveX Control y c) .NET Assembly, y ninguna de estas opciones puedo instalar .PAS.

Tengo que instalar desde otra ruta acaso??

Saludos, gracias.
Responder Con Cita
  #8  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
A ver, Pues, como no habias mencionado que version delphi estas utilizando, ahora es momento de mencionarlo. Pues la ruta que te mostre se aplica a Delphi 7.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
La version que utilizo es CodeGear Delphi 2007 for Win32 R2 Version 11.0.2902.1047

En esta versión se puede instalar el componente??
Responder Con Cita
  #10  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por odrack Ver Mensaje
La version que utilizo es CodeGear Delphi 2007 for Win32 R2 Version 11.0.2902.1047

En esta versión se puede instalar el componente??
Realmente no sabria decirte ya que nunca he usado Delphi 2007, y yo creo que si se puede, a ver si algún compañero que use esa version te ayude.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #11  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Ok, he encontrado esta nota en el foro y voy a probarlo. De todas formas gracias.

Cita:
Esta explicación es válida para Delphi 7 o inferior, para Delphi 8 o superior el procedimiento es distinto, ya que los desarrolladores de Borland/CodeGear removieron este menú desde esta versión, por lo que el procedimiento para agregar componentes sueltos deberás hacerlo desde File, Open y abrir el paquete predeterminado de paquetes del usuario en Delphi desde la carpeta de instalación y agregarlos o crear un nuevo paquete (package).
Responder Con Cita
  #12  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Pues manos a la carga!!, aqui te espero para cualquier duda.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #13  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Lo he tratado de instalar de la siguiente forma NEW ITEMS - Package - Abrir atexto.pas. Lo he guardado todo en una carpeta y en el archivo PAckage lo he instalado (boton derecho install), al finalizar el proceso me muestra que s e ha isntalado el package. ¿Ahora como puedo comprobar que ralmente se insatalo? y ¿como puedo ejecutarlo? ya que estoy confundido con esto.

Saludos
Responder Con Cita
  #14  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Pues, si luego de crear el paquete con el ATexto.pas y ejecutado e instalado, en las solapas de los componentes debe haber uno que diga aloySoft si no es asi debes abrir el paquete creado y darle al boton install.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #15  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Ya lo he revisado y ya se encuentra instalado. Actualmente utilizo
Código SQL [-]
    edit1.text := atexto.tletras(strtofloat(edit2.text));
para ejecutar el codigo que tengo para cambio de numero y letras, ¿Como lo llamo desde algun boton?

perdona las molestias que te ocasiono.
Responder Con Cita
  #16  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var Numero: Extended;
begin
Numero := StrToFloat(Edit1.Text);
Letras1.Numero := Trunc(Numero);
Edit2.Text := Format('%s CON %d/100 .-', [Letras1.AsString, Trunc(100*Frac(Numero))]);
end;

Molestias no hay ninguna .

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #17  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Muchas gracias funciona perfectamente. solo tengo una duda mas, cuando yo quiera hacer la distrubución de este programa (mi desarrollo) ¿Tengo que agregar algun componente o se compila con el mismo programa para su distribucion?
Responder Con Cita
  #18  
Antiguo 21-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por odrack Ver Mensaje
Muchas gracias funciona perfectamente. solo tengo una duda mas, cuando yo quiera hacer la distrubución de este programa (mi desarrollo) ¿Tengo que agregar algun componente o se compila con el mismo programa para su distribucion?
No, al compilar el programa el componente queda parte de ella, pues, no utiliza archivos externos como Dll, etc, etc.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #19  
Antiguo 21-05-2008
odrack odrack is offline
Miembro
 
Registrado: feb 2008
Posts: 167
Poder: 17
odrack Va por buen camino
Muchas gracias, de vdd que no se que haria sin todo su apoyo y sin este foro claro esta.

Saludos.
Responder Con Cita
  #20  
Antiguo 02-12-2008
elchino07 elchino07 is offline
Registrado
 
Registrado: oct 2006
Posts: 3
Poder: 0
elchino07 Va por buen camino
una duda

El resultado me sale en letras minusculas, hay alguna manera de que el resultado se muestre en mayusculas o algo que yo haya omitido?
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
cambiar tipo de letra Max_E. Varios 1 28-02-2007 21:58:28
Cambiar el tipo de letra en un QReport adebonis Impresión 7 30-08-2005 17:51:08
Como Cambiar Una Cantidad Numerica En Una Cantidad En Letra AdIIX Varios 3 28-04-2005 21:45:23
cantidad con letra de dolares torito Varios 5 29-03-2005 18:58:53
Cambiar el tipo de letra de un TMainMenu BlueSteel Varios 1 05-01-2005 13:59:30


La franja horaria es GMT +2. Ahora son las 18:36:19.


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