Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Error con numeros y decimales (https://www.clubdelphi.com/foros/showthread.php?t=82854)

river_1 19-04-2013 09:17:05

Error con numeros y decimales
 
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.
Cita:

...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:
Código Delphi [-]
...
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;
...
Cita:

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:
Código Delphi [-]
  Application.UpdateFormatSettings := False;
  DecimalSeparator := '.';

Saludos.

river_1 21-04-2013 00:40:51

Gracias
 
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.

Código Delphi [-]
Application.UpdateFormatSettings := False;
DecimalSeparator := '.';

Saludos

ecfisa 21-04-2013 21:44:52

Hola river_1.
Cita:

Empezado por river_1 (Mensaje 458993)
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.

Saludos.

river_1 24-04-2013 20:53:56

Ya quedo señores , con la opcion de Restablecer en la configuracion regional se arreglo...


La franja horaria es GMT +2. Ahora son las 08:24:23.

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