Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   is not a valid floating point (https://www.clubdelphi.com/foros/showthread.php?t=91990)

angelratza 20-06-2017 20:26:29

is not a valid floating point
 
Aquí de nuevo yo preguntando, tal vez sea algo trivial pero no encuentro la causa de este error y quisiera me apoyaran a verificar que lo pudiera estar generando, ya que no me acepta cantidades numéricas en miles.

Estoy capturando los datos desde un TStringGrid, pero estos al ser en miles me arroja el error de " '{cantidad en miles}' is not a valid floating point ".

Les dejo la parte del código en donde se presenta el error. :confused:

Código Delphi [-]
                
importdesc:=StrToFloat(Fventa.SGVenta.Cells[6,Fventa.SGVenta.Row]); // Se toma el valor desde la columna 6 que corresponde al importe en miles
importd:=FormatFloat('#,##0.00',importdesc); // Le trato de aplicar el formato pero AQUÍ ES DONDE MARCA EL ERROR.

// si la cantidad no es en miles realiza el codigo que sigue mas abajo sin problemas pero si no el programa se detiene por causa del error descrito

                if idesc <> 0 then
                begin
                  Desc:=1-idesc/100; //a 1 se resta el porcentaje de descuento para q Desc se multiplique por la cantidad
                  import:=importdesc*Desc;
                  Fventa.SGVenta.Cells[5,Fventa.SGVenta.Row]:= IntToStr(idesc); //Descuento
                end;

                import2:=FormatFloat('#,##0.00',import);
                Fventa.SGVenta.Cells[6,Fventa.SGVenta.Row]:= import2; //Importe con descuento aplicado

Quedo atento de sus comentarios, y agradezco el apoyo que brindan en este foro que siempre es de mucha ayuda. :D^\||/

oscarac 20-06-2017 22:26:59

te has fijado en la configuracion regional?

angelratza 20-06-2017 23:00:22

Gracias por preguntar y ya quedo resuelto, pues leyendo algunos post relacionados de este foro encontré el siguiente:

http://www.clubdelphi.com/foros/show...448#post123448

En donde menciona una solución que me ha funcionado de maravilla.

Verán resulta que cuando yo tomaba el String con el valor numérico este contenía el valor decimal completo: p/e = "45,000.00"; lo cual al pasarlo a un valor FLOAT era invalido y arrojaba el error.

Lo único que hice fue crear una función que elimine los puntos decimales para evitar el error y posterior darle formato nuevamente para su uso en el programa.

Código Delphi [-]

function QuitaEn(Cadena, Esto: String): String;
   var
     aPos: Integer;
   begin
     aPos := Pos(Esto, Cadena);
     Result:= '';
     while (aPos > 0) do begin
       Result := Result + Copy(Cadena, 1, aPos-1);
       Delete(Cadena, 1, aPos + Length(Esto)-1);
       aPos := Pos(Esto, Cadena);
     end;
     Result := Result+Cadena;
   end;   

importdesc:=StrToFloat(QuitaEn(Fventa.SGVenta.Cells[6,Fventa.SGVenta.Row], ',')); // Quitamos los valores decimales para evitar el error
importd:=FormatFloat('#,##0.00',importdesc); // Se le vuelve a dar el formato correcto

:D^\||/


La franja horaria es GMT +2. Ahora son las 21:49:04.

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