![]() |
float con coma (,) o punto (.)
Saludos
Hola comunidad, estoy realizando un programilla de la siguiente forma tengo dos edits en uno el usuario inserta un numero de tipo float, despues yo lo resto contra otro float que defino directamente dentro del codigo y asigno el resultado al segundo edit. El primer edit recibe el número y en su evento KeyPress hago lo siguiente Código:
void __fastcall TForm6::DBEdit9KeyPress(TObject *Sender, char &Key)En el evento Change lo siguiente Código:
void __fastcall TForm6::DBEdit9Change(TObject *Sender)En conclusion : 1 En mi pc el separador decimal es la coma, de otra forma a error en la conversion. 2 En la otra pc el separador decimal es el punto. De otra forma da error. 3 Al asignar un valor en el codigo a la variable C tengo que hacerlo usando como separador decimal el punto sino tampoco en mi pc funciona o sea da error. Pregunta Cual es el separador decimal en c, el punto o la coma? P.D. Realmente no entiendo como puede funcionar bien el mismo codigo en una pc y en otra no. Gracias de antemano por su respuesta |
Cita:
Revisá si te sirve este hilo Un saludo. |
Cita:
De paso el codigo funciona perfecto en mi maquina con la coma, pero no en la de el usuario que estoy probando, de paso si lo pongo con el punto le funciona perfecto al usuario pero a mi no me funciona. Lo que no entiendo es que quieres decir con esto: Cita:
Existe alguna forma de definir cual es el separador decimal interno para que no me de error al efectuar la conversion ? |
Obtencion de Input Locale
Te doy una solucion a tu problema, no es la mas optima para implementarla, pero te puede dar una idea para partir de ahi, algo mas formal.
Dejar que la aplicacion decida cuando aplicar "," o "." , lo cual dependera de que Input tenga el PC donde lo ejecutes. Para obtener el separador decimal utilizas NumberFormatInfo(No recuerdo como instanciarlo, pero sangoogle, siempre sabe todo), dependiendo de si te retorne una "," o "." operas en tu aplicacion. Saludos |
Otra solucion
Cita:
Mediante un registry, puedes determinar cual es el decimal utilizado en la PC. Voy a implementarlo en codigo, para mi aplicacion. y posteo el codigo. Saludos |
Cita:
Espero a que lo implementes y postees !!! |
Cita:
Cita:
Cita:
Código:
DecimalSeparator = '.'; // Si quieres que sea el punto |
Solucion Optima y Viable
Cita:
El codigo para obtener cual es el decimal en una PC es el siguiente OJO: Incluyes la libreria #include <Registry.hpp> Para que no te de problema Código:
Saludos. |
Hola.
Los valores actuales de los formatos de la configuración regional, también se pueden obtener consultando directamente las variables. Ejemplo: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { |
Cita:
Si el usuario tiene configurado el sistema para usar una coma como separador decimal y oprime un punto, es problema del usuario, tú no debes tratar de adivinar lo que él quería hacer, simplemente dejas que el sistema le marque el error: Cita:
En resumen, tu pregunta en este hilo ni siquiera debería darse. No lo digo por molestar, sino para enfatizar el hecho de que tu código no debería preocuparse por esto. // Saludos |
Cita:
Sin embargo no veo mal que exponga sus dudas pues el tema es útil desde el punto de vista didáctico. Ha servido para que tanto lmpadron como otros en su situación, se den cuenta de la existencia de distintas configuraciones del separador decimal y otros, como bien apunta ecfisa, y de pié al sabio consejo de roman. Saludos. |
Cita:
Después de leer tu post reuní a los futuros usuarios y los puse al tanto del asunto y todos estuvieron de acuerdo en que hiciera lo que fuera necesario para que sea mas simple y cómoda la inserción de los datos en la base de datos. Cita:
Cita:
Cita:
Cita:
Código:
void __fastcall TForm6::DBEdit9Change(TObject *Sender)Quiciera agradecerles a todos los que me han ayudado a averiguar finalmente cual es el separador decimal en los float :D jamas imaginarme que estaba en el registro, eso explica porque el mismo código funcionaba perfecto en una pc y muy mal en otras. De paso he aprendido que existe DecimalSeparator para este tipo de casos. Gracia a todos por prestarme su ayuda y su tiempo |
No creo que tenga caso colocar la asignación
Código:
DecimalSeparator = '.'// Saludos |
Cita:
¿Viste que fácil y claro el código? Saludos! |
| La franja horaria es GMT +2. Ahora son las 16:48:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi