Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
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 26-06-2006
momo momo is offline
Registrado
 
Registrado: jun 2006
Posts: 9
Poder: 0
momo Va por buen camino
Return value of function might be undefined

Buen dia

Tengo un problema con una funcion en la cual el compilador me marca warning, debido a que el codigo no es suficiente para asignar el resultado de la funcion es decir, no he identificado todos los comportamientos posibles de mi funcion. Le he dado vueltas y no puedo identificar que me falta.
Todavia me encuentro atrapada en la programacion procedural.

Código Delphi [-]
function TFrmRepClients.borrarLista(cajaverifica: string):Boolean; 
var b: integer;
 begin
 if (ListFirst.Items.Count = 0 ) then BorrarLista:= False
 else
 begin
   For b:= 0 to (ListFirst.Items.Count-1) do
    begin
        if (ListFirst.Items[b] = cajaverifica) then
        begin
            ListFirst.Items.Delete(b);
            borrarLista:= True;
            break;
        end
        else borrarLista:= False;
    end;
 end;
   end;

Gracias

Última edición por dec fecha: 27-06-2006 a las 12:04:41.
Responder Con Cita
  #2  
Antiguo 26-06-2006
Melcv Melcv is offline
Miembro
 
Registrado: jun 2006
Posts: 10
Poder: 0
Melcv Va por buen camino
For

el problema esta en que nada te asegura que se ejecute por lo menos alguna vez el ciclo for

For b:= 0 to (ListFirst.Items.Count-1) do

con lo cual terminas la funcion sin asignar un valor
Responder Con Cita
  #3  
Antiguo 26-06-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Hola,

Si ListFirst.Items.Count es menor que 0 nunca se asignaria un resultado de retorno, y esto es lo que te marca el compilador, no importa demasiado el warning debido a que Items.Count en la practica nunca es menor que cero, pero esta propiedad esta definida en el objeto TStrings como integer , lo que significa que teoricamente podria tener un valor negativo.

Saludos
Responder Con Cita
  #4  
Antiguo 26-06-2006
momo momo is offline
Registrado
 
Registrado: jun 2006
Posts: 9
Poder: 0
momo Va por buen camino
Gracias por la ayuda

He resuelto el problema. El que se ejecute o no el codigo depende del estado de la caja de verificacion.

Saludos y buen resto de dia
Responder Con Cita
  #5  
Antiguo 27-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Normalmente al inicio de ese tipo de funciones, se suele poner Result:= false; de esta forma eliminas la advertencia del compilador, y le das un valor según convenga.

Result := false equivale a BorrarLista:= False

Me gusta más usar "Result", porque usando el nombre de la función, puede parecer que es una variable; al leer el código suele desconcertarme.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 28-06-2006
momo momo is offline
Registrado
 
Registrado: jun 2006
Posts: 9
Poder: 0
momo Va por buen camino
Efectivamente el Result debe inicializarse con un valor

Efectivamente mi problema tambien radicaba que no inicializaba Result

Gracias por el comentario Lepe
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
Undefined service gds_db/tcp StartKill Firebird e Interbase 7 10-05-2012 01:15:53
Function vtdeleon OOP 1 25-11-2004 08:22:48
Problema: "undefined service gds_db/tcp Marc Gaspà Firebird e Interbase 4 10-05-2004 09:03:11
return un Array rjtostado Oracle 0 15-04-2004 05:44:55
'Return no-apply' Roy Varios 9 10-06-2003 23:37:38


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


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