Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar convercion Str a Float (https://www.clubdelphi.com/foros/showthread.php?t=16698)

Pascual Montes 07-12-2004 23:08:24

Validar convercion Str a Float
 
como podria validar al convertir de string a foat
tengo el siguiente codigo , pero cuando la cadena viene
vacia mi programa se interrumpe con un error :

while not data.qped4.eof do begin
if data.qped4FECHA.value > mxfecha
then begin
decodedate(mxfecha,anno, mes, dia);
series1.Add(MXCICLO, inttostr(dia), clteecolor);
mxfecha:=data.qped4FECHA.value;
end;
MXCICLO:=STRTOFLOAT(DATA.qped4CICLO.VALUE);
data.qped4.Next;
end; // del while not eof


AGRADEZCO SU ATENCION Y AYUDA
GRACIAS.:D

roman 08-12-2004 03:16:09

Hay varias opciones.

Una es interceptar la excepción:

Código Delphi [-]
try
  MXCICLO:=STRTOFLOAT(DATA.qped4CICLO.VALUE);
except
  { aquí pones el código para manejar el dato erróneo }
end;

Puedes usar la función TryStrToFloat:

Código Delphi [-]
if not TryStrToFloatDef(DATA.qped4CICLO.VALUE, MXCICLO) then
begin
  { aquí pones el código para manejar el dato erróneo }
end;

O también puedes usar StrToFloatDef si conoces de antemano que algún valor no es posible. Por ejemplo, si sabes que ningún dato puede ser -1 entonces pones:

Código Delphi [-]
MXCICLO := StrToFloatDef(DATA.qped4CICLO.VALUE, -1);
if MXCICLO = -1 then
begin
  { aquí pones el código para manejar el dato erróneo }
end;

El código que pongas para manejar el error dependerá de qué es lo que quieres hacer con un dato erróneo. Tratándose de un ciclo muy posiblemente no quieras mostrar un mensaje al usuario ya que la ejecución del ciclo se detendría en cada dato incorrecto. Puedes optar por apuntar el registro ofensor en un archivo log. Si sabes que los datos vacíos han de tratarse como ceros entonces quizá la tercera opción te sea más cómoda (cambiando -1 por 0) ya que te hará autmáticamente la conversión.

Por otra parte no indicas qué error te da, pero tratándose de bases de datos quizá el problema provenga de que el valor del campo es NULL. En tal caso, si deseas que ese valor se trate como 0 puedes tambier optar por poner la variable global NullStrictConvert en false lo que ocasiona que los valores NULL automáticamente se conviertan a ceros.

// Saludos


La franja horaria es GMT +2. Ahora son las 13:31:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi