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."