Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema como coma (https://www.clubdelphi.com/foros/showthread.php?t=71503)

odelgado2001601 23-12-2010 16:19:30

Problema como coma
 
Hola amigos

Recupero un campo de la bd mysql que esta de la siguiente forma:
Tasatr:= 0.812;

pero al colocar el valor en una variable delphi de tipo double (antes estaba real), me la coloca como 0,812.

Mi configuracion regional esta para recibir los decimales con punto y los miles con coma.

No se por que me convierte el valor con coma si con punto viene dsde la BD.


Ademas luego de procesar la se hace lo siguiente:


Stasa:=FormatFloat('####.#####',1+(Tasatr/100));


Pero esto me da un numero 1,00812, el problema es que luego meto ese valor en una consulta, pero como esta con coma, me arroja error.

Alguna sugerencia?

rgstuamigo 23-12-2010 17:36:15

Todo el entorno delphi para las variables y muestreo de datos utiliza por defecto el separador coma ( , ), dicho separdor es la variable "DecimalSeparator" ubicada en la Unidad "SysUtils", eso significa que para mostrar los datos ya sea en un dbGrid,DBEdit,etc.; delphi utiliza esta variable para poner el separador específico.;)
Entonces lo que se puede hacer es cambiar el valor de ésta variable por el que querramos, pero ojo eso implica que la modificacion afectará a todos los controles y funciones que utilizen la variable "DecimalSeparator".;), lo que suelo yo hacer es cambiarla momentaniamente para hacer alguna operacion específica y luego nuevamente ponerla como estaba anteriormente.;)
Algo así:
Código Delphi [-]
Var Aux:Char;
begin
Aux:=DecimalSeparator; //hago una copia
DecimalSeparator:= '.';//cambio el valor
{Código para hacer alguna operacion}
...
...
...
DecimalSeparator:=Aux;// Nuevamente el doy el separador por defecto
end;
Tambien es bueno saber es que delphi toma en cuenta la configuracion regional para estos menesteres.

Otra opcion muy mencionada en éstos caso es hacer el cambio de valor internamente, es decir el usuario presiona la tecla punto (.) pero internamente se hace la conversion a coma ( , ) o viceversa, de tal manera que en pantalla el usuario verá una coma ( , ) al presionar la tecla punto ( . ), es lo que hace la calculadora de Windows por ejemplo cuando presionamos la tecla punto ( . ).;)
Espero te sea de utilidad..;)
Saludos...:)

odelgado2001601 23-12-2010 17:46:01

Gracias
 
Gracias man.. funciono


La franja horaria es GMT +2. Ahora son las 00:34:12.

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