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 26-03-2020
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 18
darkbits Va por buen camino
Convertir de Numero(decimal) a letra

Hola

estoy haciendo un sistema que necesito que me genere numero a letra, encontre varios ejemplos donde maneja solo enteros donde funciona bien en los review siempre hay polemica que no se usa asi etc..
no me recuerdo si el componente RXLib lo hacia, no recuerdo bien pero cuando utilizaba delphi 6 habia un componente q lo hacia, con un click ahora no lo encuentro ovio ya no debe funcionar con DX

necesito manejar asi 2398.23 DOS MIL TRECIENTO NOVENTA Y OCHO 23/100

agradezco si alguien me puede compartir su función que tiene implementada.
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #2  
Antiguo 26-03-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por darkbits Ver Mensaje
necesito manejar asi 2398.23 DOS MIL TRECIENTO NOVENTA Y OCHO 23/100
Número a letras, no puede ser eso, sino "Dos mil trescientos noventa y ocho con veintitres", ya que "23/100" son números.
Responder Con Cita
  #3  
Antiguo 26-03-2020
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por darkbits Ver Mensaje
Hola

estoy haciendo un sistema que necesito que me genere numero a letra, encontre varios ejemplos donde maneja solo enteros donde funciona bien en los review siempre hay polemica que no se usa asi etc..
no me recuerdo si el componente RXLib lo hacia, no recuerdo bien pero cuando utilizaba delphi 6 habia un componente q lo hacia, con un click ahora no lo encuentro ovio ya no debe funcionar con DX

necesito manejar asi 2398.23 DOS MIL TRECIENTO NOVENTA Y OCHO 23/100

agradezco si alguien me puede compartir su función que tiene implementada.
Código Delphi [-]
unit NumLet;

interface

uses
  Windows, Messages, SysUtils, Classes,Vcl.Dialogs;


    function NumeroALetras(Valor: longInt):string;
    function Conv : String;
    procedure Lee (Valor: longInt);
implementation

var
    N: longint;
    L:String;

procedure Lee(Valor: longint);
begin
  if (Valor >= 0) and (Valor <= 999999999) then
    N := Valor
  else
    N := 1;
  if (Valor < 0) then
    Showmessage('Debe Ser un Número Positivo!!');
  if (Valor > 999999999) then
    Showmessage('Lo siento, Esto es solo un entero ...');
end;

function conv: string;
var
  erro, unidades, dec, cent, salva, miles, decmil, centmil, mill, aux: longint;
  cad, cad2: string;

  function convierte(s: longint): string;
  begin
    case s of
      1:
        convierte := 'uno';
      2:
        convierte := 'dos';
      3:
        convierte := 'tres';
      4:
        convierte := 'cuatro';
      5:
        convierte := 'cinco';
      6:
        convierte := 'seis';
      7:
        convierte := 'siete';
      8:
        convierte := 'ocho';
      9:
        convierte := 'nueve';
      10:
        convierte := 'diez';
      11:
        convierte := 'once';
      12:
        convierte := 'doce';
      13:
        convierte := 'trece';
      14:
        convierte := 'catorce';
      15:
        convierte := 'quince';
      20:
        convierte := 'veinte';
      30:
        convierte := 'treinta';
      40:
        convierte := 'cuarenta';
      50:
        Convierte := 'cincuenta';
      60:
        convierte := 'sesenta';
      70:
        convierte := 'setenta';
      80:
        convierte := 'ochenta';
      90:
        convierte := 'noventa';
      100:
        convierte := 'cien';
      500:
        convierte := 'quinientos';
      700:
        convierte := 'setecientos';
      900:
        convierte := 'novecientos';
    end;
  end;

begin
 // if n >999999999999 then showmessage('Debe ser un número menor a un billón')
 // else
  begin
//  label1.caption:='';
    salva := n;
    aux := n div 1000000;
    mill := aux;
    n := n mod 1000000;
    aux := n div 100000;
    centmil := aux;
    n := n mod 100000;
    aux := n div 10000;
    decmil := aux;
    n := n mod 10000;
    aux := n div 1000;
    miles := aux;
    n := n mod 1000;
    aux := n div 100;
    cent := aux;
    n := n mod 100;
    aux := n div 10;
    dec := aux;
    n := n mod 10;
    aux := n;
    unidades := aux;
    cad := '';
    if mill > 0 then
      if mill = 1 then
        cad := 'un millon '
      else
      begin
        n := mill;
        cad := conv + ' millones ';
      end;
    n := salva;
 {empieza la conversión de las centenas de miles}
    cad2 := '';
    case centmil of
      1:
        if (miles = 0) and (decmil = 0) then
          cad2 := convierte(100)
        else
          cad2 := 'ciento ';
      2:
        cad2 := convierte(2) + 'cientos ';
      3:
        cad2 := convierte(3) + 'cientos ';
      4:
        cad2 := convierte(4) + 'cientos ';
      5:
        cad2 := convierte(500) + ' ';
      6:
        cad2 := convierte(6) + 'cientos ';
      7:
        cad2 := convierte(700) + ' ';
      8:
        cad2 := convierte(8) + 'cientos ';
      9:
        cad2 := convierte(900) + ' ';
    end;
    cad := cad + cad2;
   {Termina la conversión de las centenas}

  {empieza la conversión de las decenas y unidades de miles}
    cad2 := '';
    case decmil of
      0:
        if miles <> 1 then
          cad2 := convierte(miles);
      1:
        if miles <= 5 then
          cad2 := convierte(decmil * 10 + miles)
        else
          cad2 := 'dieci' + convierte(miles);
      2:
        if miles = 0 then
          cad2 := convierte(20)
        else if miles = 1 then
          cad2 := 'veintiun'
        else
          cad2 := 'veinti' + convierte(miles);
      3:
        if miles = 0 then
          cad2 := convierte(30)
        else if miles = 1 then
          cad2 := 'treinta y un'
        else
          cad2 := 'treinta y ' + convierte(miles);
      4:
        if miles = 0 then
          cad2 := convierte(40)
        else if miles = 1 then
          cad2 := 'cuarenta y un'
        else
          cad2 := 'cuarenta y ' + convierte(miles);
      5:
        if miles = 0 then
          cad2 := convierte(50)
        else if miles = 1 then
          cad2 := 'cincuenta y un'
        else
          cad2 := 'cincuenta y ' + convierte(miles);
      6:
        if miles = 0 then
          cad2 := convierte(60)
        else if miles = 1 then
          cad2 := 'sesenta y un'
        else
          cad2 := 'sesenta y ' + convierte(miles);
      7:
        if miles = 0 then
          cad2 := convierte(70)
        else if miles = 1 then
          cad2 := 'setenta y un'
        else
          cad2 := 'setenta y ' + convierte(miles);
      8:
        if miles = 0 then
          cad2 := convierte(80)
        else if miles = 1 then
          cad2 := 'ochenta y un'
        else
          cad2 := 'ochenta y ' + convierte(miles);
      9:
        if miles = 0 then
          cad2 := convierte(90)
        else if miles = 1 then
          cad2 := 'noventa y un'
        else
          cad2 := 'noventa y ' + convierte(miles);
    end;
    if (centmil > 0) and (decmil = 0) and (miles = 1) then
      cad2 := cad2 + 'un';
    if (miles > 0) or (decmil > 0) or (centmil > 0) then
      cad2 := cad2 + ' mil ';
    cad := cad + cad2;
    {termina la conversión de las decenas y unidades de miles}

 {empieza la conversión de las centenas}
    cad2 := '';
    case cent of
      1:
        if (unidades = 0) and (dec = 0) then
          cad2 := convierte(100)
        else
          cad2 := 'ciento ';
      2:
        cad2 := convierte(2) + 'cientos ';
      3:
        cad2 := convierte(3) + 'cientos ';
      4:
        cad2 := convierte(4) + 'cientos ';
      5:
        cad2 := convierte(500) + ' ';
      6:
        cad2 := convierte(6) + 'cientos ';
      7:
        cad2 := convierte(700) + ' ';
      8:
        cad2 := convierte(8) + 'cientos ';
      9:
        cad2 := convierte(900) + ' ';
    end;
    cad := cad + cad2;
   {Termina la conversión de las centenas}

  {empieza la conversión de las decenas y unidades}
    cad2 := '';
    case dec of
      0:
        cad2 := convierte(unidades);
      1:
        if unidades <= 5 then
          cad2 := convierte(dec * 10 + unidades)
        else
          cad2 := 'dieci' + convierte(unidades);
      2:
        if unidades = 0 then
          cad2 := convierte(20)
        else
          cad2 := 'veinti' + convierte(unidades);
      3:
        if unidades = 0 then
          cad2 := convierte(30)
        else
          cad2 := 'treinta y ' + convierte(unidades);
      4:
        if unidades = 0 then
          cad2 := convierte(40)
        else
          cad2 := 'cuarenta y ' + convierte(unidades);
      5:
        if unidades = 0 then
          cad2 := convierte(50)
        else
          cad2 := 'cincuenta y ' + convierte(unidades);
      6:
        if unidades = 0 then
          cad2 := convierte(60)
        else
          cad2 := 'sesenta y ' + convierte(unidades);
      7:
        if unidades = 0 then
          cad2 := convierte(70)
        else
          cad2 := 'setenta y ' + convierte(unidades);
      8:
        if unidades = 0 then
          cad2 := convierte(80)
        else
          cad2 := 'ochenta y ' + convierte(unidades);
      9:
        if unidades = 0 then
          cad2 := convierte(90)
        else
          cad2 := 'noventa y ' + convierte(unidades);
    end;
    cad := cad + cad2;
    {termina la conversión de las decenas y unidades}
    if cad <> '' then
      conv := cad
    else
      Conv := 'Cero';
  end;
end;

function NumeroALetras(Valor: longInt):string;
begin
  Lee(Valor);
  Result := Conv;
end;

end.
__________________
all your base are belong to us
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
Dudas al convertir numero en letra y centavos rufo Varios 14 27-11-2009 22:26:26
Convertir NULL a Decimal luigidean SQL 7 15-03-2008 03:28:28
Convertir de varchar a decimal nelem Oracle 3 13-03-2008 08:40:58
Como convertir numero entero en letra kurono Varios 2 23-01-2008 05:10:39
Convertir hexa a decimal dmasson Varios 4 05-02-2006 15:48:05


La franja horaria es GMT +2. Ahora son las 18:51:27.


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