Se isso é D7, os dois estão update 1?

 

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao 
Morais
Enviada em: segunda-feira, 21 de janeiro de 2008 14:23
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Destructor da Classe não está sendo chamado

 

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.

--
Joao Morais

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a