Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   error al convertir a currrency strtocurrrr (https://www.clubdelphi.com/foros/showthread.php?t=74679)

martita 04-07-2011 18:11:26

error al convertir a currrency strtocurrrr
 
hola foro, tengo un codigo que me esta marcando error al convertir de texto a currency, estoy pasando de un tedit a un campo de una tabla, en pantalla el edit muestra el valor anteponiendo el signo $ ejemplo $ 488.56 , y al convertirlo con strtocurr me marca un error que dice es que $488.56 is not a valid floating pont value, mi codido es el siguiente:

//code
if data.fremisiones.FindKey([xcodigo]) then begin
data.fremisiones.Edit;
data.fremisionesEstado.value:='FACTURADO';
data.fremisionesTotal_facturado.value:=strtofloat(total.text);
data.fremisionesIva.value:=strtocurr(iva.text);
data.fremisionesPagada.value:='NO';
//code

maeyanes 04-07-2011 18:22:50

Hola...

El problema que tienes es precisamente por el símbolo $. Trata de quitar el caracter antes de hacer la conversión:

Código Delphi [-]
var
  Temp: string;

begin
  // ...
  Temp := Trim(Copy(total.text, 2, Lenght(total.text)));
  data.fremisionesTotal_facturado.value:=strtofloat(Temp);
end;


Saludos...

martita 04-07-2011 20:57:51

gracias funciono
 
gracias funciono perfectamente la solucion que me diste

pero aun asi me queda una duda de rasonamiento,
se supone que un campo currency de una tabla lleva el formato
$123,123.12 ? osea va al inicio el simbolo de $
entonces lo mas logico es que no marcara error si le estoy enviando un
valor de un edit que contiene $123,123.12 , mi logica dice que es ilogico
que necesite quitarle el signo de $, que opinas de esto ?

Casimiro Notevi 04-07-2011 21:21:37

Es que el problema es el TEdit, existen algunos componentes que aceptan valores numéricos y tienen la propiedad Value donde se almacena el dato sin el 'formateo' de puntos, comas y símbolos de moneda.
En ese caso podrías hacer algo así como:
Código Delphi [-]
begin
  data.fremisionesTotal_facturado.value := total.value;
end;

maeyanes 04-07-2011 21:23:43

Hola...

La forma en que ves representado un tipo de dato Currency es solo eso, una representación, el valor en realidad se guarda como un decimal o flotante.

Por otro lado, la función StrToFloat que usas, espera que la cadena de caracteres sea un valor flotante correcto, esto es, que no tenga ningún caracter fuera de números y el punto.

Y ya para finalizar, el código que te puse te va a dar problemas si el valor que estás convirtiendo tiene comas (,), las cuales tendrías que quitar también antes de realizar la conversión.


Saludos...


La franja horaria es GMT +2. Ahora son las 14:34:28.

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