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: 24
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
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 23:00:59.


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