Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Return value of function might be undefined (https://www.clubdelphi.com/foros/showthread.php?t=33065)

momo 26-06-2006 20:01:03

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

Melcv 26-06-2006 20:43:55

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

Mick 26-06-2006 20:46:51

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

momo 26-06-2006 22:17:57

:) 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

Lepe 27-06-2006 12:45:42

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

momo 27-06-2006 23:20:44

Efectivamente el Result debe inicializarse con un valor
 
Efectivamente mi problema tambien radicaba que no inicializaba Result

Gracias por el comentario Lepe :)


La franja horaria es GMT +2. Ahora son las 18:04:06.

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