Que erro é esse: Unsafe typecast of ´Integer´ to ´TObject´ ?

16/03/2006

Olá está dando o seguinte Warning:

[b:9573ea356a]Unsafe typecast of ´Integer´ to ´TObject´ [/b:9573ea356a]
nesta linha,

if (Tag <> 0) and (TObject(Tag) is TPenProp) then FPenProp := TPenProp(Tag);



O que pode ser isso?

Obrigado,
[]s


Titanius

Respostas

16/03/2006

Massuda

O compilador está achando esquisito você dizer que um Integer é um TObject; note que, como é um warning, o compilador não está impedindo você de fazer isso (não deu erro de compilação). A finalidade dos warnings e hints é indicar a você coisas potencialmente estranhas em seu código; a idéia é que você dê uma olhada no código e decida se está ou não correto.


Responder Citar

16/03/2006

Titanius

Massuda, está certo sim o codigo, mas nao tem como tirar esse warning nao?


Responder Citar

16/03/2006

Massuda

Você pode desabilitar a geração de warnings/hints em Project|Options|Compiler|Messages (Show warnings/Show hints), mas dependendo da versão do seu Delphi, tem um modo de desabilitar determinadas mensagens, mas, no momento, não sei te indicar exatamente onde isso está, pois a versão que estou usando agora não tem esse recurso.


Responder Citar

16/03/2006

Dopi

Vc pode usar
[i:c54acb1d41]{$WARNINGS OFF}[/i:c54acb1d41]
Codigo
[i:c54acb1d41]{$WARNINGS ON}[/i:c54acb1d41]

Acho que o efeito desejado no código acima seria o mesmo que
  if (Tag <= Integer(High(TPenProp)) ) and
     (Tag >= Integer(Low(TPenProp)) ) then 
     FPenProp := TPenProp(Tag);


Dessa maneira não gera warnings mas acho que fica ainda mais confuso..
:roll:


Responder Citar