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 05-05-2006
Nelly Nelly is offline
Miembro
 
Registrado: oct 2005
Posts: 148
Poder: 19
Nelly Va por buen camino
Question Como no traducir la parte fraccionaria de x cantidad


Hola a todos, tengan un lindo dia.

Mi pregunta es la siguiente, ¿Como le hago para que al momento de convertir en letras una cantidad x, no se tradusca la parte decimal?, por ejemplo: 25.36 la forma correcta sería (Veinticinco 36/100), el componente que utilizo es el ATexto, y aun no se como hacer que no me muestre la traducción del decimal. El caso es que cuando tradusco una cantidad lo hace de la esta forma: 'Veinticinco con treinta y seis', podrian ayudarme, se que a veces las cosas no son tan complicadas como parecen, pero si me gustaria ver un ejemplo.

Nelly (Vive y deja vivir)
Responder Con Cita
  #2  
Antiguo 05-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No conozco bien el componete ATexto, pero se me ocurre que puedes utilizarlo para convertir solo la parte entera de la cantidad y añadir tu despues la parte decimal. Me explico:

Código Delphi [-]
var
  R: Real;
  ParteEntera: Integer;
  ParteDecimal: Integer;
  Resultado: string;
begin
  R:= 25.36;
  ParteEntera:= Trunc(R);
  ParteDecimal:= Trunc(Frac(R)*100);
  // Aqui convierte la parte entera con Atexto y colocalo en resultado
  // ...
  // Luego solo le tenemos que añadir la parte decimal
  Resultado:= Resultado + IntToStr(ParteDecimal) + '/100';  
end;
Responder Con Cita
  #3  
Antiguo 09-10-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Porque no pules esta función encontrada en trucomania
probablemente, puedas endulzarla para que se ajuste a los decimales...


Código Delphi [-]
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;

O puedes verla más definida aquí

{Saludos}
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #4  
Antiguo 09-10-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
JAJAJAJAJAJAJAJAJA.....Una disculpa solemne....nunca ví el título de tu Hilo..... porque lo duplicaste como "ayuda con conversión" o algo así....

Requieres la parte fraccionaria......bien.....pues eso si, aunque no está en ruso....creo que he (aunque no debió haber sucedido asi) olvidado todos mis programas que hice en pascal....tenía funciones que te devolvían hasta 10 decimales... lo siento....pero pues ya tienes una función para los enteros, puede ser que en base a ella, o aplicando un poco el trabajo de lógica sobre ésta puedas obtener más resultados, que en la espera....

Ojalá pudiera hacer más, pero creo estar a ésta hora "ciclado" (en shock)....y ojalá sirva de algo esa función....que igual y no es asi... pero algo de ayuda nunca debe ser despreciada....por inútil que ésta sea...

{Saludos}
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #5  
Antiguo 09-10-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Ala Fernando, entonces debes irte a dormir, buenas noches

Saludos
Responder Con Cita
  #6  
Antiguo 09-10-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Te tomo la palabra....En este momento me voy....puede que mis ojos dejen de ser del dominio .com y me envíen al .net.... intente, con wwwwwww o htttttppp, o bien que siga cometiendo barbaridad y media con mi máquina....y hasta queriendo entender un poco el francés.... , que en mitad de la baba que le escurre a mi teclado, parece que lo escribiera perfectamente....con eso de que la "i" y la "o" estan juntas, más fácil deslizo los dedos... ....

En este momento me voy....

{Au Revoir, mon ami}
__________________
"...Ayer Bastaba un Sueño..."
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
Como utilizar el componente de conversión de x cantidad a letras Nelly Varios 3 28-04-2006 00:49:37
Como traducir el idioma de mi aplicacion? JuanErasmo C++ Builder 1 30-12-2005 15:17:11
Como Cambiar Una Cantidad Numerica En Una Cantidad En Letra AdIIX Varios 3 28-04-2005 21:45:23
Como Guardo como bmp o jpg solo una parte de la ventana maravert Gráficos 3 15-10-2004 18:16:50
como copiar parte de una cadena ? saul saldaña Varios 4 04-12-2003 18:20:36


La franja horaria es GMT +2. Ahora son las 00:58:18.


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