Ir al contenido


Foto

Problemas con FormatFloat Android Delphi XE7

FormatFloat

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

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2015 - 11:50

Hola a todos, he hecho mi primer app para Android con Delphi XE7, pero tengo un problema con FormatFloat, es tan sencillo como esto:
 

delphi
  1. FormatFloat('#,###.00', algo)
  2.  

El resultado me muestra los puntos y coma al revés, el resultado esperado es el 8,000.00 y me devuelve 8.000,00, cabe aclarar que la configuración regional de mi pc está correctamente configurado, existe otro método en Firemonkey?.

Saludos.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.242 mensajes
  • LocationMéxico

Escrito 13 julio 2015 - 01:10

Voy a probar, no debería ser un problema eso.

 

Saludos


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.242 mensajes
  • LocationMéxico

Escrito 13 julio 2015 - 01:31

Que tal bro,

 

Pues no, algo tiene tu máquina, acabo de hacer la prueba con un DelphiXE7 en Windows 7 Ultimate 64 bits y funcionó sin problema.

 

Adjunto imagen.

 

Saludos

Archivos adjuntos


  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2015 - 02:11

mmm, yo tengo windows 8.1 de 64 Bits con Delphi XE7 Ultmitate 32bits, sera por eso?.

 

Saludos.


  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2015 - 03:07

Ya vi el problema, el error está en mi móvil, la misma sólo tiene un idioma español y no dice de donde, pero es de México porque sale MN al final de los valores, y no veo donde puedo agregar otro idioma adicional en android 4.2.2.

 

Saludos.


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.242 mensajes
  • LocationMéxico

Escrito 13 julio 2015 - 03:43

Ya vi el problema, el error está en mi móvil, la misma sólo tiene un idioma español y no dice de donde, pero es de México porque sale MN al final de los valores, y no veo donde puedo agregar otro idioma adicional en android 4.2.2.

 

Saludos.

 

 

Si fuera de México la notación es 8,000.00 la que tu tienes no es de México, es de España u otro país con esa notación.

 

Saludos


  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 julio 2015 - 04:58

Vale amigo Ego, debe haber alguna forma de obviar el idioma del movil sino que se maneje de la aplicación misma.

 

Saludos


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 14 julio 2015 - 07:31

No se si es posible cambiar la configuración regional de un Android. Incluso me pregunto si es que cuenta con esa funcionalidad, porque al menos en Android 4.1.2 (la versión que tiene mi celular) no le encuentro opción alguna. Si es posible cambiarle el idioma, pero de nada sirve si ya está en español.

 

Lo que puedes probar es forzar a que la aplicación asuma los carácteres de separación de miles y de decimales estableciendo el correcto al momento de iniciar la aplicación. Las variables que buscas son DecimalSeparator y ThousandSeparator. Aunque desconozco si éstas son compatibles con la versión móvil.

 

También podrías revisar lo que se propone en este hilo en StackOverflow. Que es una forma de cambiar la configuración regional.

 

Saludos,


  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 14 julio 2015 - 08:23

No se si es posible cambiar la configuración regional de un Android. Incluso me pregunto si es que cuenta con esa funcionalidad, porque al menos en Android 4.1.2 (la versión que tiene mi celular) no le encuentro opción alguna. Si es posible cambiarle el idioma, pero de nada sirve si ya está en español.
 
Lo que puedes probar es forzar a que la aplicación asuma los carácteres de separación de miles y de decimales estableciendo el correcto al momento de iniciar la aplicación. Las variables que buscas son DecimalSeparator y ThousandSeparator. Aunque desconozco si éstas son compatibles con la versión móvil.
 
También podrías revisar lo que se propone en este hilo en StackOverflow. Que es una forma de cambiar la configuración regional.
 
Saludos,

 
Según he investigado es que TFormatsettings es una variable global (?), el caso es que para poder forzar la salida habría que hacerlo de esta manera:
 


delphi
  1. var
  2. MiFormato: TFormatSettings;
  3.  
  4. MiFormato := TFormatSettings.Create;
  5. MiFormato.DecimalSeparator:='.';
  6. MiFormato.ThousandSeparator:=',';

Hare las pruebas pertinentes esta noche.

Saludos.


  • 0

#10 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 14 julio 2015 - 12:10

Hola enecumene

 

Definitivamente la solucion que planteas al final es la correcta: Se crea e inicializa el registro TFormatSettings y luego se lo envia como parametro a las funciones FormatXXX, CurrToStr, etc

 

De esta manera no le modificas la config regional en el dispositivo/pc y tu aplicacion muestra la informacion con el formato mas adecuado. Lo unico que falta es que por modificar estos parametros se rompa tu aplicacion en algun otro punto o que luego otra aplicacion del usuario se comporte de manera inesperada

 

A veces quizas puede resultar tedioso el tener que crear e inicializar el registro y pasarlo a la funcion de formateo en cuestion, pero eso se puede solucionar con una unidad que tenga una funcion que se encarge justamente de eso. Tambien podria ver viable el tener inicializados uno o mas registros TFormatSettings con los cuales poder trabjar, por ejemplo

 

TMonedaFormat, TDateFormat, TDateTimeFormat..etc

 

Saludos!


  • 1