Fórum POO - Virtual; override; 2 camadas de profundidade? #531304
10/09/2015
0
3 Objetos, sendo um herdeiro do outro:
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.
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
Curtir tópico
+ 0
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.
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
Clique aqui para fazer login e interagir na Comunidade :)