Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2004
Pascual Montes Pascual Montes is offline
Baneado
 
Registrado: nov 2004
Posts: 76
Poder: 0
Pascual Montes Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 08-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
Respuesta



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


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


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