Ver Mensaje Individual
  #5  
Antiguo 23-11-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Mírate esta función, creo que es la que mencionas que había en el Club:
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,n2ouble;

      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.
Responder Con Cita