Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-06-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Question Error de conversion

Hola de ante mano gracias a todos.
Tengo un problema si no lo tuviera no pondria el hilo jiji.
el problema en si es de conversion para no hacer grande la cosa es este
Código:
    Float=1000;
    SGMateriales->Cells[4][Renglon] = FormatFloat("###,###,###.##", Float); // quedaria     SGMateriales->Cells[4][Renglon] = 1,000

    Float = StrToFloat(SGMateriales->Cells[4][Renglon]); // Aqui mi error
    Float = SGMateriales->Cells[4][Renglon].ToDouble();// nuevamente error
En este se puede observar q le doy formato y despues lo quiero convertir a Flotante, cosa q no se puede por no ce que razon si los separadores de miles es "," alguna sugerencia para corregirlo
Perdon si reposte error con Telmex Internet
__________________
El Software es como el Sexo, si es de gratis es Mejor
Responder Con Cita
  #2  
Antiguo 27-06-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Smile

Solucion absurda es quitar las ","
Float = AnsiReplaceStr(SGMateriales->Cells[4][Renglon],",","");
__________________
El Software es como el Sexo, si es de gratis es Mejor
Responder Con Cita
  #3  
Antiguo 27-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aams01.

No entiendo el por que de:
Código:
  Float = StrToFloat(SGMateriales->Cells[4][Renglon]);
Siendo que el valor sigue estando en la variable Float...

Pero si de todas formas queres realizar la conversión tenes que quitar el formato. Tendrías que hacerlo sobre una variable auxiliar,
para que no cambie la presentación en la grilla:
Código:
 Double Float = 1015.28; // valor de ejemplo
 SGMateriales->Cells[4][Renglon] = FormatFloat("###,###,###.##", Float);
 String Aux = SGMateriales->Cells[4][Renglon];
 char sep = DecimalSeparator;          // guardar separador decimal
    Aux.Delete(Aux.Pos('.'),1);        // eliminar '.'
    Aux = AnsiReplaceStr(Aux,",","."); // cambiar ',' por '.'
    DecimalSeparator = '.';            // separador decimal = '.'
    /* CONVERTIR */
    Float = Aux.ToDouble();
    Float = StrToFloat(Aux);
    DecimalSeparator = sep;            // restaurar sep. decimal
Y más sencillo todavia:
Código:
 Double Float = 1000.28;
 String Aux = FloatToStr(Float);
 SGMateriales->Cells[1][1] = FormatFloat("###,###,###.##", Float);
    /* CONVERTIR */
    Float = Aux.ToDouble();
    Float = StrToFloat(Aux);
Pero insisto que no veo el sentido de las conversiones si el valor ya está en la variable Float.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-06-2011 a las 16:32:29.
Responder Con Cita
  #4  
Antiguo 27-06-2011
Avatar de aams01
aams01 aams01 is offline
Miembro
 
Registrado: ago 2010
Posts: 44
Poder: 0
aams01 Va por buen camino
Hola gracias por responder, la verdad yo tampoco le veo el sentido ni logica pero no me permite guardar a flotante por que tien una ',' y eso q esta como separador de miles. por eso de tener que quitar las ','. Gracias si tubieses alguna explicacion a este error seria de mucha ayuda.

El echo de Float = StrToFloat(SGMateriales->Cells[4][Renglon]); no es tanto en si por el echo de si tengo o no el valor 2 renglones arriba, lo que pasa es que no quise poner tanto codigo,
tengo un StringGrid en el cual tengo varios campos (id, nombre.....precio, Cantidad, Importe=precio * Cantidad) pero como al usuario le agradan las cosas faciles de dijerir uso los separadores de miles ',' despues de esa operacion tambien sumo el resultado de la columa Importe esto lo ago con una funcion q recorre todo el StrinGrid
__________________
El Software es como el Sexo, si es de gratis es Mejor

Última edición por aams01 fecha: 27-06-2011 a las 19:41:51.
Responder Con Cita
  #5  
Antiguo 27-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Gracias si tubieses alguna explicacion a este error seria de mucha ayuda
El motivo es que la representación interna admitida para un número flotante es: [parte_entera] [punto] [parte_decimal]
Tomando como ejemplo el número ciento veinticinco mil con doce, C++ Builder lo representa: 125000.12
Pero al darle el formato con la máscara queda: 125,000.12, representación numérica que no tiene un formato aceptado por C++ Builder.
Y eso mismo es lo que indica el mensaje de error: '125,000.12' is not a valid floating point value, al intentar la conversión de esa cadena.
El echo de que C++ Builder muestre el separador decimal como un punto o una coma es manipulable mediante:
Código:
  DecimalSeparator = '.';  // muestra: 125.000.12
  // o 
  DecimalSeparator = ',';  // muestra: 125.000,12
Pero es sólo al efecto de ser mostrado, internamente se sigue manejando el formato [parte_entera] [punto] [parte_decimal], es por eso que
no genera error si paso previo a la conversión hacemos:
Código:
  Aux = "125.000,12";
  Aux.Delete(Aux.Pos('.'),1);
  StrToFloat(Aux);
Ya que de esta manera se elimina el primer '.' empezando de la izquierda y queda con el formato requerido.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-06-2011 a las 23:56:54.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en type conversion che SQL 4 14-10-2008 22:52:14
Error de conversion de valor Petolansa Varios 3 05-12-2007 15:03:54
Error de conversion de tipos cacu OOP 0 28-11-2007 06:36:36
Error de Conversion..... chileno OOP 7 06-01-2007 01:03:28
Error conversion from string '26/01/2006' ZRR Firebird e Interbase 5 27-01-2006 23:56:12


La franja horaria es GMT +2. Ahora son las 00:21:11.


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
Copyright 1996-2007 Club Delphi