[DCC Warning] Unit2.pas(39): W1035 Return value of function 'TForm2.EntradaValida' might be undefined
Vamos ao código:
function TForm2.EntradaValida(piEntrada: Integer): Boolean;
begin
if (piEntrada > 0) then
begin
{...}
Exit;
end;
{...}
Result := True;
end;
Neste exemplo o compilador reclama que o resultado da função EntradaValida não foi definido.
O compilador foi ninja o suficiente para perceber que se entrar no if..then o método será interrompido pelo comando Exit.
Desde o D2009 podemos chamar o Exit de dentro de uma função passando como parâmetro o resultado desta função. Isso elimina o warning W1035. Veja no exemplo abaixo:
function TForm2.EntradaValida(piEntrada: Integer): Boolean;
begin
if (piEntrada > 0) then
begin
{...}
Exit(False); {<-- PULO DO GATO}
end;
{...}
Result := True;
end;
É isso ai.

7 comentários:
Também passei por isso, mas a solução foi diferente, tirei o EXIT :).
Cara. Dica interessante. Não sabia dessa.
normalmente eu ja defino o result da funcao pra um valor padrao no inicio da mesma, mas essa dica tb vale
Olá, gostei desta dica.
Tenho uma pergunta.
Quando a função deve retornar um tipo string, o meu compilador não emite nenhum aviso. Alguma configuração que perdi ou é o comportamento padrão.
(Delphi 2010).
Isso tudo não poderia ser feito assim?
Result := not (piEntrada > 0);
Opa amigons. Por algum motivo só li os comentários hoje.
Wanc, boa solução.
Gabriel, obrigado.
Control Fácil, a sua abordagem é corretíssima.
Paulo, eu não tinha percebido esta situação. Acredito que o problema se manisfeste apenas com tipos ordinais.
Renato, poderia sim. O exemplo é didático e talvez tivesse mais sentido para você se fosse um Integer.
Forte abraço a todos!
Postar um comentário