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.