Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   puntos y comas - decimales (https://www.clubdelphi.com/foros/showthread.php?t=52277)

Duc 16-01-2008 12:29:49

puntos y comas - decimales
 
Hola a todos!

Tengo un problema, estoy implementando una aplicación con Delphi y tengo el siguiente problema: Delphi, por defecto, utiliza el punto (.) para separar los decimales, en cambio Windows en castellano, por defecto, utiliza (,) para para separar los decimales. Entonces cuando utilizo un StrToFloat() o un FloatToStr() me da problemas. Lo que tengo que hacer es cambiar la configuración de windows para que utilice el punto para separar los decimales.

El problema es que la aplicación, una vez hecha, si la quiero pasar a algún compañero, se tiene que cambiar la configuració de Windows... lo cual es una chapuza.

Alguien sabe cómo solucionarlo?

Muchas gracias.

jachguate 16-01-2008 12:32:44

Al contrario de lo que pensás, las aplicaciones de delphi leen el separador decimal de la configuración de windows.

Si no queres basarte en dicha configuración, podes manipular directamente el valor de la variable DecimalSeparator de la unidad SysUtils (no recomendable si no sabes lo que haces).

Hasta luego.

;)

dec 16-01-2008 12:33:50

Hola,

Me extraña esto, porque se supone que Delphi utiliza cierta variable "DecimalSeparator", que digo yo inicializará con el valor que esté usándose en el sistema. No sé. Digo que me extraña, porque para evitar los problemas que refieres, supongo que usa la variable mencionada (entre otras variables y técnicas, claro), pero, si es como dices... pues chico, no sé...

Ivanzinho 16-01-2008 12:37:40

Lo que puedes hacer es jugar con la variable DecimalSeparator (char), aquí se almacena el separador decimal de windows.

Yo lo que hago es lo siguentes :

1.- En la introdución de texto : Capturo la tecla pulsada y si la tecla es '.' o ',' la cambio por DecimalSeparator.

2.- En el StrToFloat : si DecimalSeparator = ',' haces un StringReplace y cambias la ',' por el '.'.

Espero te sirva.

Un saúdo.

Ivanzinho 16-01-2008 12:38:53

¡Qué lento!, aquí el que no corre vuela, se me adelanto jachguate y dec :p.

Un saúdo.

ElDuc 16-01-2008 12:58:47

Otra cosa
 
¿Alguien sabe cómo hacer que alpulsar el punto del teclado numérico aparezca una como?

Ivanzinho 16-01-2008 13:06:42

Es lo que te comento en el post anterior.

En el evento OnKeyPress del componente comprueba el valor del parmetro key, si key = "." entonces lo cambias por ",".

Yo lo que hago es controlar si key = '.' o ',' y lo cambio por DecimalSeparator.

Un saúdo.

juanlaplata 16-01-2008 17:40:15

en "MI" aplicacion decido como se veran los numeros, por eso al final de la unit principal le agrego
Código Delphi [-]
initialization
  sysutils.Decimalseparator := '.';      {Separador decimal}
  sysutils.ThousandSeparator := ',';   {Separador de miles}
end.
Fuente: este club.


La franja horaria es GMT +2. Ahora son las 06:03:30.

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