2008/1/21 Joao Morais <[EMAIL PROTECTED]>:
> Leodinei Bielak wrote:
>  >>> TLicensa = class(TObject)
>  >>> Licensa : string;
>  >>> Validade : TDate;
>  >>> public
>  >>> constructor Create;
>  >>> destructor Destroy;
>  >>> end;
>  >>
>  >> Você está dizendo que, neste código, o compilador emite um erro se você
>  >> fizer:
>  >>
>  >> destructor Destroy; override;
>  >>
>  >> É isto?
>  >
>  > Exatamente.
>  > Eu eu clicar com o control no TObject ele mostra que no fonte está como
> virtual.
>  > Se eu deixar sem nada após a declaração ele mostra a mensagem de que o
>  > Método Destroy está sendo escondido.
>  > Se eu colocar reintroduce ele não mostrar mais o warning.
>  > Se eu colocar override dá o erro de compilação.
>
>  Eu só consigo reproduzir isto quando eu troco destructor por procedure,
>  ainda assim o erro apresentado pelo compilador é que a declaração
>  TObject.Destroy é diferente da declaração TLicensa.Destroy, e não que
>  TObject.Destroy seja um método estático.
>
>  Outra é que você possa estar usando uma unit System que não a original,
>  e nesta unit o Destroy não é virtual. Muito pouco provável, são muitas
>  classes que utilizam Destroy virtual.
>
>  Ou talvez você não esteja herdando direto de TObject, mas de alguma
>  outra classe em que o Destroy foi reintroduzido como estático. No
>  entanto isto não bate com o que você declarou, então é só especulação.
>
>  Fora isto, cabou-se minha criatividade. Fique a vontade em mantar mais
>  um pouco de código a fim de que seja possível ao menos reproduzir o
>  problema.
>
Descobri o meu erro.
Eu estava colocando override tanto no Create quanto no Destroy.
Obrigado pela ajuda.
-- 
Leodinei Bielak
http://leodinei.blogspot.com/

"The whole point of getting things done is knowing what to leave undone."

Responder a