FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error "No es un valor flotante Valido"
Saludos Club, traigo algo que es común pero que no logro entender (Soy novato ), tengo este error pero no solo quiero que me expliquen como resolverlo sino porque ocurre para evitarlo en el futuro.
este es el código:
me da error cuando en el StringGrid tengo cantidades en Formato 1,234.00 por el asunto de la coma, como lo resuelvo y porque pasa? Gracias |
#2
|
||||
|
||||
Buenos días.
El tema es que la cadena "1,234.00" no es un valor numérico válido. Sólo puede haber un punto decimal, sin comas ni apóstrofes. Es decir, que debería ser "1234.00" ó, dependiendo de la configuración e implementación, "1234,00". |
#3
|
|||
|
|||
ok, ahora como lo resuelvo? sin que cambien la presentación del numero al cliente.
|
#4
|
||||
|
||||
Cita:
De entrada, independientemente del "tema" para números, fechas y demás que tiene Winbugs, que diga, Windows, los números CON DECIMALES se expresan "999999999[.]9999", así que tu número debe ser expresado CON UN PUNTO separando los enteros de los decimales... La plantilla de presentación depende directamente de la presentación numérica regional.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively... "Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum. Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco |
#5
|
||||
|
||||
Hay varias maneras..
1. Las funciones para aplicar formato a strings siempre cuentan con una version sobrecargada (overloaded) que reciben un parametro adicional; un record de tipo TFormatSettings donde se especifica como se debe aplicar dicho formato Ademas esta forma es thread-safe 2. Evidentemente, cuando no se usa la version sobrecargada, se emplea una variable FormatSettings, definida en System.SysUtils Este record global es inicializado automaticamente por Delphi, y se carga con la informacion de la configuracion regional del sistema operativo. Asi que otra alternativa es modificar lo que tiene este registro global y todas las llamadas a las funciones ahora usaran la nueva configuracion. Esta version no es thread-safe Tambien existe una propiedad en el objeto Application, la UpdateFormatSettings que es una bandera Booleana. Por defecto esta a True, y significa que tu aplicacion al recibir una notificacion de Windows cuando el usuario cambia la config. regional, actua en consecuencia y actualiza el registro FormatSettings global; si optas por esta opcion, podrias considerar dejar esta opcion a False Esas son las 2 formas mas generales, rapidas y faciles de implementar Por otro lado, leyendo tu codigo parece que estas manipulando valores monetarios. En ese caso desaconsejo el uso de los tipos float, real, double, single, extended. Lo mas adecuado es usar el tipo Currency, que es representado internamente como un entero y por lo tanto tenes mayor precision; los numeros en coma flotante no son exactos y puede dar lugar a algunos "problemillas" Para convertir de tipo Currency a string y viceversa podes usar las funciones:
Sobre esta ultima variante CurrToStrF podes ver aca ejemplos de uso y la salida Saludos Última edición por AgustinOrtu fecha: 12-02-2016 a las 18:51:52. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
El "problema" de los números reales (coma flotante) | Casimiro Notevi | La Taberna | 4 | 09-01-2013 20:11:18 |
Error delphi "valor no puede ser nulo nombre del parametro key" | nickolas | Varios | 0 | 21-08-2012 02:07:45 |
Reemplazar "," por ":" en un punto flotante | DTAR | SQL | 2 | 09-05-2006 23:55:07 |
Añadir signo "+" a una variable flotante | Ricsato | Varios | 2 | 18-06-2005 00:53:03 |
convertir la cadena "1.8376e+01" a numero flotante | franciscobucio | Varios | 0 | 22-10-2004 22:49:47 |
|