Cita:
Empezado por roman
Jamás deberías hacer una cosa así. Jamás. Tu código debe respetar las preferencias regionales del usuario
|
Román, como dices, algo así no debería hacerse y lo de respetar la configuración del usuario esta más que claro sin embargo los usuarios que van a usar este software deben insertar aproximadamente 3000 planillas en solo 8 horas por ende han solicitado que sea de la forma mas cómoda posible, lanzar un mensaje de error los haría primeramente tener que parar de insertar los datos además estarían forzados a usar la coma del teclado que es mucho mas incomoda cuando insertamos números dado que generalmente lo hacemos desde el área numérica del teclado (en caso de que esa sea su configuración).
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:
Empezado por roman
No lo digo por molestar, sino para enfatizar el hecho de que tu código no debería preocuparse por esto.
|
No se preocupe, nunca es molestia recibir un consejo y mas aun cuando es tan tan bueno.
Cita:
Empezado por gersojn
Hola, veras, para realizar el calculo sin que tengas problemas, efectivamente debes realizar la conversion Internamente(para que el usuario no lo perciba y trabaje a comodidad) o bien, externamente.
|
La solución de
gersojn es muy buena pero no quisiera modificar el registro de todos mis usuarios y usar esa solución para determinar que esta usando como separador decimal y después efectuar el cambio es un problema inmenso ya que aunque mi soft se adapte a cada pc aun así estarían escribiendo en la base de datos los decimales con puntos o comas según su configuración y seria después muy molesto hacer algún calculo.
Cita:
Empezado por escafandra
Creo que no has entendido la sugerencia de ecfisa
|
Pues si, tenias toda la razón realmente no la había entendido pero después de revisarla he decidido hacer la conversión interna como indica
ecfisa y asi no modificar las preferencias regionales de los usuarios de acuerdo al consejo de
Román
Cita:
Empezado por ecfisa
Código:
DecimalSeparator = '.'; // muestra: 125.000.12
// o
DecimalSeparator = ','; // muestra: 125.000,12
|
Al final el codigo ha quedado asi
Código:
void __fastcall TForm6::DBEdit9Change(TObject *Sender)
{
DecimalSeparator = '.'
float a,b,c;
b = Round(StrToFloat(Edit1->Text),2);
c = 7.33;
if (b == c)
{
DBEdit2->Text = "0";
}
else
{
if (b > c)
{
MessageDlg("Upsss lo siento !!!!, el número A es mayor al numero B",mtInformation, TMsgDlgButtons() << mbOK, 0);
}
else
{
a = c - b;
Edit2->Text = FloatToStr(Round(a,2));
}
}
}
De esta forma me funciona perfecto.
Quiciera agradecerles a todos los que me han ayudado a averiguar finalmente cual es el separador decimal en los
float 
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
__________________
Nunca esta de más volver a ver la
"Guia de Estilo" o
"La Otra Guia de Estilo". Recuerda siempre usar los
"Tags" para una mejor legibilidad de tu código.
Cuando miras fijamente al abismo, este te devuelve la mirada
oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________