Ir al contenido


Foto

[RESUELTO] Dar formato a numeros enteros


  • Por favor identifícate para responder
8 respuestas en este tema

#1 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 25 febrero 2010 - 06:46

Hola como estan, estoy programando en Delphi 5 y tengo la siguiente pregunta.

En mi formulario tengo 5 label, en los cuales muestro numeros enteros aleatorios, necesito saber si hay alguna funcion para mostrar los numeros de la siguite manera.

Por ejemplo: 35153209, que lo muestre 35.153.209

Utilizo la funcion IntToStr() para convertir el valor entero.
Se que con la funcion FloatToStrF() puedo dar un formato especificado a traves de los parametros que envio.
Hay algo parecido para trabajar con numeros enteros?

Gracias!
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 25 febrero 2010 - 07:13

Hola, ¿intentaste usar la función Format?
  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 25 febrero 2010 - 07:21

Hola

FloatToStrF( 1234.5678, ffCurrency, 8, 2 ) devuelve 1.234,57 €
FloatToStrF( 1234.5678, ffCurrency, 8, 4 ) devuelve 1.234,5678 €
FloatToStrF( 1234.5678, ffGeneral, 8, 2 )  devuelve 1234,5678
FloatToStrF( 1234.5678, ffGeneral, 8, 4 )  devuelve 1234,5678
FloatToStrF( 1234.5678, ffExponent, 8, 2 ) devuelve 1,2345678E+03
FloatToStrF( 1234.5678, ffExponent, 8, 4 ) devuelve 1,2345678E+0003
FloatToStrF( 1234.5678, ffFixed, 8, 2 )    devuelve 1234,57
FloatToStrF( 1234.5678, ffFixed, 8, 4 )    devuelve 1234,5678
FloatToStrF( 1234.5678, ffNumber, 8, 2 )  devuelve 1.234,57
FloatToStrF( 1234.5678, ffNumber, 8, 4 )  devuelve 1.234,5678




Format( '%d', [1234] )      devuelve -1234
Format( '%e', [1234.5678] ) devuelve 1,23456780000000E+003
Format( '%f', [1234.5678] ) devuelve 1234,57
Format( '%g', [1234.5678] ) devuelve 1234,5678
Format( '%n', [1234.5678] ) devuelve 1.234,57
Format( '%m', [1234.5678] ) devuelve 1.234,57 €
sTexto := 'Prueba';
Format( '%p', [sTexto] )    devuelve 0012FE14
Format( '%s', [sTexto] )    devuelve Prueba
Format( '%u', [1234] )      devuelve 1234
Format( '%x', [1234] )      devuelve 4D2

Ejemplo:


delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var n: integer;
  3. begin
  4.   n:= 35153209;
  5.   label1.Caption:= FloatToStrF(n, ffNumber, 8, 0 );
  6. end;


Saludos
  • 0

#4 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 25 febrero 2010 - 07:59

Gracias por sus rapidas respuestas.

La funcion FloatToStr() la conocia. Pero la duda que tengo es si es correcto utilizarla al estar trabajando con enteros. En realidad lo que hago es generar numeros aleatorios y mostrarlos en los Label. Y son numeros grandes, es por eso que quiero aplicarle formato, en este caso solo el punto de mil.


  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 25 febrero 2010 - 08:16

yo lo hiciera con formatfloat

FormatFloat('#,##0', numero);

no hay problema con los tipos
  • 0

#6 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 25 febrero 2010 - 08:53

yo lo hiciera con formatfloat

FormatFloat('#,##0', numero);

no hay problema con los tipos


Funciono con esta, lo mismo que con FloatToStrF();

Pero me surgio un nuevo problemita  a la hora de comparar los numeros ingresados. Aqui edejo el codigo para explicarme mejor



delphi
  1.               if Emenor1.text <> '' then
  2.                 begin
  3.                     if strtoint(Emenor1.text)=strtoint(Lnum1.caption)-1 then
  4.                       begin
  5.                           Emenor1.color:=CLlime;
  6.                       end
  7.                     else
  8.                       begin
  9.                           Emenor1.color:=CLred;
  10.                       end;
  11.                 end;



"Lnum1" es el label que me muestra el numero formateado por ejemplo "10.000" (diez mil)
y "Emenor1" es el edit donde se tiene que cargar un numero menos que el de label "9.999"

el problema es que a la hora de verificar me dice que el valor que hay en label no es un entero valido.
lo mismo me dice del Edit cuando quiero poner el numero con (.) punto, no logro comparar los numeros. Alguna idea ?
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 febrero 2010 - 11:12

Hola

Puedes hacer uso de la función StringReplace



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   if StrtoInt(StringReplace(Emenor1.text,',','',[rfReplaceAll])) =
  4.     StrtoInt(StringReplace(Lnum1.caption,',','',[rfReplaceAll]))-1 then
  5.     Emenor1.color := clLime
  6.   else
  7.     Emenor1.color := clRed;
  8. end;



Salud OS
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 26 febrero 2010 - 08:18



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   if StrtoInt(StringReplace(Emenor1.text,ThousandSeparator,'',[rfReplaceAll])) =
  4.     StrtoInt(StringReplace(Lnum1.caption,ThousandSeparator,'',[rfReplaceAll]))-1 then
  5.     Emenor1.color := clLime
  6.   else
  7.     Emenor1.color := clRed;
  8. end;



Así evitamos los errores con los puntos.
  • 0

#9 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 26 febrero 2010 - 02:26

Gracias por la funcion, no la conocia.
Ahora si funciona correctamente, por ahora lo utilizo con el punto (.) porque es lo unico que permito cargar, pero tengo en cuenta lo de ThousandSeparator.

Ahora si [RESUELTO]  (y)


  • 0




IP.Board spam blocked by CleanTalk.