PDA

Ver la Versión Completa : Error con numeros y decimales


river_1
19-04-2013, 09:17:05
Buenas , tengo una aplicacion diseñada en Delphi 7 y BD SQL. Tengo problemas al poner el exe con mi cliente en la parte del desplegado de los numeros , les explico :

Con mi cliente los DBedit y los valores numericos del grid aparecen asi 45,50 cuando deberia de ser asi 45.50 , se pensaria que la configuracion regional del equipo estuviera en otro pais diferente a Mexico que es la que yo ocupo pero todo esta configurado bien , de hecho en la BD se almacenan bien los valores con el punto decimal correcto.

Solo pasa con el desplegado en mi programa y solo con el cliente, tambien lo raro es que todas las aplicaciones del equipo funcionan muy bien, esto es la primera vez que pasa y no tengo la menor idea el porque lo hace.
A alguien le ha pasado?.
De antemano gracias.

ecfisa
19-04-2013, 11:24:36
Hola river_1.

...se pensaria que la configuracion regional del equipo estuviera en otro pais diferente a Mexico que es la que yo ocupo pero todo esta configurado bien

Sin embargo tiene toda la pinta de ser por la configuración regional... Podes comprobar que país (abreviatura) y separador decimal tiene configurado el S.O. del equipo:

...
function GetLocaleInformation(lcType : LCTYPE) : string;
var
buffer : PChar;
cchData : Integer;
begin
cchData := GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, lcType, 0, 0);
GetMem(buffer, cchData);
try
Result:='';
if GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, lcType, buffer, cchData) > 0 then
Result := buffer;
finally
FreeMem(buffer);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('País: ' + GetLocaleInformation(LOCALE_SABBREVCTRYNAME)+#10+
'Separador decimal: '+GetLocaleInformation(LOCALE_SDECIMAL));
end;
...


Con mi cliente los DBedit y los valores numericos del grid aparecen asi 45,50 cuando deberia de ser asi 45.50

Aunque no es aconsejable, si queres que siempre el separador decimal sea el punto, independientemente de la configuración regional, al inicio de tu aplicación podes hacer:

Application.UpdateFormatSettings := False;
DecimalSeparator := '.';


Saludos.

river_1
21-04-2013, 00:40:51
Gracias ecfisa por tomarte el tiempo de contestar a mi pregunta , esas pruebas solo las puedo realizar con el cliente porque solo con esa maquina me da el problema. De hecho compare la configuracion regional de mi maquina con la del cliente y tenemos la misma configuracion regional no hay ninguna diferencia, la unica es que el tiene windows 7 a 64 bits y el mio es windows 7 a 32.

La otra es que en la BD se almacenan los valores de manera correcta aun cuando el cliente captura por ejemplo el numero 45,50, en la BD se almacena bien 45.50. Tambien todas las demas aplicaciones le funcionan de manera correcta y no le quiero mover a su configuracion porque todo su equipo esta funcionando de manera correcta.

Lamentablemente no puedo hacer nada con mi maquina ya que a mi me funciona bien y nunca habia tenido ese problema con mis programas.

Algo que no sea configuracion de windows esta pasando y no se que es ?? Alguna otra recomendacion en lo que se llega el LUnes para hacer las pruebas que me sugeriste??
Gracias...

newtron
21-04-2013, 10:05:47
El problema que tienes aparenta de todas a todas ser lo que te comenta nuestro amigo ecfisa. Yo me he encontrado a veces que ordenadores con una configuración regional en teoría correcta me daban el mismo problema así que te aconsejaría hacer una prueba en el cliente con las instrucciones que te menciona para forzar el decimal a punto.


Application.UpdateFormatSettings := False;
DecimalSeparator := '.';


Saludos

ecfisa
21-04-2013, 21:44:52
Hola river_1.
tenemos la misma configuracion regional no hay ninguna diferencia, la unica es que el tiene windows 7 a 64 bits y el mio es windows 7 a 32.
Haber empezado por eso! :)

Revisa este enlace, creo que se trata de un caso similar al tuyo: Decimalseparator y thousandseparator en Windows 7 64 bits home premium (http://www.clubdelphi.com/foros/showthread.php?t=72603).

Saludos.

river_1
24-04-2013, 20:53:56
Ya quedo señores , con la opcion de Restablecer en la configuracion regional se arreglo...