POO - Virtual; override; 2 camadas de profundidade?

Delphi

10/09/2015

3 Objetos, sendo um herdeiro do outro:
Type 
  TPai = class 
  public 
    procedure FazAlgo; virutal; 
  end; 

  TFilho = class(TPai) 
  public 
    procedure FazAlgo; override; 
  end; 

  TNeto = class(TFilho) 
  public 
    procedure FazAlgo; override; 
  end; 


Temos, por tanto, 3 camadas de profundidade em objetos

Mas o compilador só executa o que está implementado em TFilho.FazAlgo, a implementação de TNeto.FazAlgo não é executada.

Se eu coloco um BreakPoint em TNeto.FazAlgo fica a linha em verde e não em vermelho.

Corri a net em busca de solução. Achei nada.

Os amigos aqui devem saber..



Também já tentei usar dynamic no lugar de Virtual, mas nada aconteceu.
Multi Ltda

Multi Ltda

Curtidas 0

Respostas

Multi Ltda

Multi Ltda

10/09/2015

E agora percebi que ao fechar o sistema. ao destruir o objeto, gera um erro ao destruir este objeto com .Free

este erro só acontece mesmo com o objeto TNeto

Mas ao debugar para ver em que linha, dentro de Destroy, o erro é gerado, percebo que não dá erro em linha alguma.

O comando Destroy é executado completamente e depois do último End uma exceção do tipo EExternalException é gerada.
GOSTEI 0
Multi Ltda

Multi Ltda

10/09/2015

Falha minha.. Eu havia escrito errado..
GOSTEI 0
POSTAR