Fórum Aviso ao compilar ... #353743
15/02/2008
0
Alguém sabe por que o compilador gera este aviso na linha indicada e se há algum problema com o código abaixo ?
[Hint] unDM.pas(54): Value assigned to ´C´ never used
Parte do código:
var
C: TComponent;
begin
C := oForm.FindComponent(Item);
try
if (C <> nil) then
begin
...
end;
finally
C := nil; // Nessa linha aparece o [Hint]
end;
Obrigado.
Francisco.
Francisco.riva1
Curtir tópico
+ 0Posts
15/02/2008
Marcosrocha
Tente mover o C := oForm.FindComponent para dentro do try. É só isso... Dependendo da posição da inicialização da variável e do seu código, o Delphi estima que o valor associado a ela pode não ser usado, o que causaria desperdício de memória.
Gostei + 0
15/02/2008
Massuda
Se estiver compilando com otimização de código ligada, com certeza essa linha será eliminada do código final.
Gostei + 0
15/02/2008
Francisco.riva1
Já tentei várias coisas (com relação a posição de criar a variável C e atribuir Nil a ela) nada funcionou e parece estar tudo certo!
Vocês conseguem ver alguma coisa errada nesta rotina ?
Vejam a rotina inteira:
var
C: TComponent;
begin
C := oForm.FindComponent(Item);
try
if (C <> nil) then
begin
// Configura itens do menu
if C is TMenuItem then
begin
if Permissao = ´S´ then
TMenuItem(C).Enabled := True
else
TMenuItem(C).Enabled := False;
end
else
// Configura outros objetos
begin
if Permissao = ´S´ then
TMostraProp(C).Enabled := True
else
TMostraProp(C).Enabled := False;
end;
end;
finally
C := nil;
end;
Gostei + 0
15/02/2008
Massuda
No seu caso, o aviso é gerado porque você atribui um valor à variável C mas depois disso não utiliza mais essa variável (que é o seu caso) ou atribui um novo valor à variável. O compilador avisa pois isso pode ser um erro (você esqueceu de continuar o código ou a atribuição está no lugar errado).
Para ´resolver´ o aviso, basta retirar a linha que atribui nil à C, já que ela é desnecessária.
Gostei + 0
15/02/2008
Rodc
Agora, se você estivesse usando C := TComponent.Create(); aí sim você teria de usar FreeAndNil() para remover o componente que você criou.
Gostei + 0
15/02/2008
Francisco.riva1
Obrigado a todos pela atenção.
Abraços,
Francisco.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)