PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum POO - Virtual; override; 2 camadas de profundidade? #531304

10/09/2015

0

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

Responder

Posts

10/09/2015

Multi Ltda

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

Gostei + 0

17/09/2015

Multi Ltda

Falha minha.. Eu havia escrito errado..
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar