Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-02-2023
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 5
juggern Va por buen camino
Buenos días chicos,

Lo de strtofloat y .AsCurrency lo puse porque buscando alternativas, probé también eso y veo que de esa forma me sigue asignando un 0.
Vuelvo a hacerlo con más calma aclarando las variables, quizás como dice Casimiro, al hacerlo rápido no fui muy limpio.

Código Delphi [-]
var
  ePrecio:Extended;
  dPrecio: Double;
  rPrecio: real;
  siPrecio: Single;
  cPrecio: Currency;
  sPrecio: string;

begin
      sPrecio:= '105';
      ePrecio:= StrToFloat(sPrecio);
      dPrecio:= StrToFloat(sPrecio);
      rPrecio:= StrToFloat(sPrecio);
      siPrecio:= StrToFloat(sPrecio);
      cPrecio:= StrToFloat(sPrecio);
      cPrecio:= StrToCurr(sPrecio);
end

Todo eso, me asigna todo el rato un 0 salvo sPrecio, que me guarda un 105;


Para buscar alternativas, he hecho lo de guardar el valor en un campo de una tabla y luego recogerlo de nuevo.
El campo de la tabla es money

Me lo guarda correctamente, y al recuperarlos, me sigue guardando un 0 salvo en la variable string que me lo guarda correctamente:

Código Delphi [-]
      Query.FieldByName('Precio').Value:= StrToCurr(sPrecio);

      Query.Post;
      cPrecio:= Query.FieldByName('Precio').AsCurrency;
      dPrecio:= Query.FieldByName('Precio').AsFloat;
      sPrecio:= Query.FieldByName('Precio').AsString;

He revisado lo que comenta movorack por si acaso y no existe otra función en el programa y al seguirla me lleva correctamente a SysUtils.

Como estoy guardando el valor en las variables de varias formas, tanto usando los métodos de sysutils como los del ADOQuery y con todos me guarda un 0, pues por eso os decía lo de que creía que había algún problema al guardar.

No se, estoy bastante despistado. He usado mas veces en otros sitios estas conversiones y no he tenido problemas salvo la otra vez hace tanto tiempo que os comenté.

He probado a hacer un Clean del proyecto, pero nada.

Edito**: Había insertado imágenes con la watch list desde delphi pero se ve que no me lo ha cogido
Responder Con Cita
  #2  
Antiguo 25-02-2023
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 5
juggern Va por buen camino
Hola chicos,

Creo que he dado con la clave, el problema está en el ámbito de las variables o algo de eso.
Cuando hago la asignación a cualquier variable que declaro dentro del procedimiento, me las deja a 0, salvo las de tipo string, pero si declaro una variable global, en esa si que me guarda bien el dato.
El procedimiento lo tengo declarado dentro de la clase del formulario principal, pero he probado a declarar el procedimiento en distintos sitios, incluso global y nada. Solo me asigna bien el valor si lo meto en una variable global.
Responder Con Cita
  #3  
Antiguo 27-02-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.744
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Quizás tengas el mismo nombre de variable gobal y de procedimiento y eso te esté confundiendo...
Si utilizas varables globales la recomendación es ponerles un prefijo para no mezclarlas con otras de ámbito más restringido
Por ejemplo "GLB_Precio".

Código Delphi [-]
unit TEST;

var
  Precio : double;

procedure PRUEBA;
var
  Precio : double;
begin
  // Esta variable Precio es la del procedimiento. La global no se modifica.
  Precio := 200;
end;

begin
  Precio := 0;
  Prueba;
  ShowMessage(FloatToStr(Precio);  // <--- Esto imprime 0 porque toma la variable global
end.
Responder Con Cita
  #4  
Antiguo 28-02-2023
juggern juggern is offline
Miembro
 
Registrado: jun 2020
Posts: 79
Poder: 5
juggern Va por buen camino
Hola!!!

Al final lo he solucionado usando variables globales.

Las variables globales siempre les pongo otro prefijo para distinguirlas y no hay otra con ese nombre, igualmente, el valor se lo asigno dentro de la función y la uso dentro de la función, es una variable local y lo que hace es que no me deja asignarle ningún valor, se queda a 0. Me pasa con las tipo numérico no con las string, asique debe ser algo de acceso a memoria o yo que se jeje.
Responder Con Cita
  #5  
Antiguo 28-02-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por juggern Ver Mensaje
Hola!!!
Al final lo he solucionado usando variables globales.
Las variables globales siempre les pongo otro prefijo para distinguirlas y no hay otra con ese nombre, igualmente, el valor se lo asigno dentro de la función y la uso dentro de la función, es una variable local y lo que hace es que no me deja asignarle ningún valor, se queda a 0. Me pasa con las tipo numérico no con las string, asique debe ser algo de acceso a memoria o yo que se jeje.
Las variables globales solamente para cuando no tenga más remedio que usarla. Nunca jamás para resolver un problema. Solamente te va a traer dolores de cabeza después.
Pon tu proyecto, o un ejemplo de tu proyecto, para que le demos un vistazo, así lo solucionamos "de verdad",
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Errores en la conversión usando StrToFloat juggern Varios 2 07-09-2020 02:30:37
StrToFloat en Delphi 2010 y windows 7 edgwin Varios 5 11-10-2010 18:32:38
Listview Problema en StrToFloat pablonill OOP 3 01-08-2008 13:01:17
StrtoFloat mjjj Varios 2 27-12-2007 18:32:06
Problemas con StrToFloat MaMu Varios 1 08-07-2007 09:25:10


La franja horaria es GMT +2. Ahora son las 08:51:53.


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
Copyright 1996-2007 Club Delphi