Variáveis públicas perdendo conteúdo na herança!!!
Oi pessoal!
Estou com um problema que está me deixando com os cabelos em pé!
É o seguinte... tenho um form chamado ´GenTela´ a partir do qual herdo todos os outros. Contudo, em um determinado formulário chamado ´Orca´ que está acontecendo algo estranhíssimo.
Neste form (como em todos os outros), passo alguns parâmetros para três variáveis declaradas como públicas (NomeTab e NomeAtribChave), declaradas no form GenTela. Bem, algumas linhas após passar os valores para essas variáveis públicas, chamo um trecho do GenTelas usando [b:de217683e2]inherited[/b:de217683e2].
Coloquei dois breakpoints no programa, um na última linha antes de chamar o [b:de217683e2]inherited[/b:de217683e2], e outro logo após a chamada do [b:de217683e2]inherited[/b:de217683e2]. No primeiro breakpoint, todos os valores estão lá, nas variáveis. No segundo breakpoint, eles simplesmente se foram!
O mais estranho de tudo é que eu pensei que pudesse ter alguma coisa a ver com a herança. Então, só para testar, declarei uma nova variável pública chamada temp. E repeti o processo. Adivinhem: todos os valores foram perdidos, mas o valor passado para temp está lá!!!!
Não é de enlouquecer????
Alguém tem alguma idéia???
Valeu! :?:
[b:de217683e2][color=red:de217683e2]Título excepcionalmente não excluído. Removido: ´Socorro!!´ (AZ)[/color:de217683e2][/b:de217683e2]
Estou com um problema que está me deixando com os cabelos em pé!
É o seguinte... tenho um form chamado ´GenTela´ a partir do qual herdo todos os outros. Contudo, em um determinado formulário chamado ´Orca´ que está acontecendo algo estranhíssimo.
Neste form (como em todos os outros), passo alguns parâmetros para três variáveis declaradas como públicas (NomeTab e NomeAtribChave), declaradas no form GenTela. Bem, algumas linhas após passar os valores para essas variáveis públicas, chamo um trecho do GenTelas usando [b:de217683e2]inherited[/b:de217683e2].
Coloquei dois breakpoints no programa, um na última linha antes de chamar o [b:de217683e2]inherited[/b:de217683e2], e outro logo após a chamada do [b:de217683e2]inherited[/b:de217683e2]. No primeiro breakpoint, todos os valores estão lá, nas variáveis. No segundo breakpoint, eles simplesmente se foram!
O mais estranho de tudo é que eu pensei que pudesse ter alguma coisa a ver com a herança. Então, só para testar, declarei uma nova variável pública chamada temp. E repeti o processo. Adivinhem: todos os valores foram perdidos, mas o valor passado para temp está lá!!!!
Não é de enlouquecer????
Alguém tem alguma idéia???
Valeu! :?:
[b:de217683e2][color=red:de217683e2]Título excepcionalmente não excluído. Removido: ´Socorro!!´ (AZ)[/color:de217683e2][/b:de217683e2]
Yankleber
Curtidas 0
Respostas
Beppe
30/04/2004
GenTela não estaria modificando estes campos q citou? Mesmo sendo herdado, os campos são compartilhados entre as classes na hierarquia(claro q são independentes entre instâncias diferentes)
GOSTEI 0
Yankleber
30/04/2004
O mais estranho é que os valores são perdidos exatamente no momento em que a execução do programa passa para GenTela, mesmo antes que a primeira linha da herança seja executada. Basta que a execução passe para GenTela e os conteúdos das variáveis se perdem imediatamente.
Outra coisa estranha, é que isso não acontece com os outros formulários herdados do programa, mas somente o Orca.
Outra coisa estranha, é que uma variável que eu criei depois, chamada ´temp´ - declarada no mesmo lugar onde eu declarei as variáveis que perdem seus conteúdos - não perde.
Cara, isso está me deixando louco!!!!
Outra coisa estranha, é que isso não acontece com os outros formulários herdados do programa, mas somente o Orca.
Outra coisa estranha, é que uma variável que eu criei depois, chamada ´temp´ - declarada no mesmo lugar onde eu declarei as variáveis que perdem seus conteúdos - não perde.
Cara, isso está me deixando louco!!!!
GOSTEI 0
Beppe
30/04/2004
Deve ser uma typecast maliciosa, antes de chamar o tal método...
GOSTEI 0
Yankleber
30/04/2004
O que exatamente vem a ser isso???
Eu sou novatoem Delphi...
Grato!
Eu sou novatoem Delphi...
Grato!
GOSTEI 0
Beppe
30/04/2004
O que exatamente vem a ser isso???
Eu sou novatoem Delphi...
Grato!
Se naum conhece, este naum deve ser o problema...
mas vejamos, typecast é afirmar pro Delphi que uma expressão é de outro tipo. Isto as vezes é útil, principalmente no Delphi, na verdade, naum é um mal necessário, mas uma compensação. Uma typecast maliciosa seria afirmar o tipo errado:
var I Integer; L: TList; begin I := 1234567890; L := TList(I); // ocerrerá um erro se usar L, já que provavelmente não existe // um objeto TList(ou descendente) no endereço indicado por I. end;
GOSTEI 0
Yankleber
30/04/2004
Oi, sou eu de novo...
O caso é o seguinte: é um projeto de faculdade, o professor deu para a gente um ´esqueleto´ de um programa pronto para a gente trabalhar em cima. Eu já tenho uma grande experiência com programação há muitos anos mas costumo trabalhar com VB. O caso é que o professor tem um estilo de programação que eu não acho muito legal (ele utiliza componentes do tipo databound, que eu acho pouco profissional), e como eu não tenho prática com Delphi estou apanhando à beça!
Acaba que estou ficando frustrado e desanimado, pois já bati cabeça pra caramba em cima desse problema e não consegui descobrir o que há de errado.
Se eu lhe mandasse o meu projeto você daria uma olhada nele para mim?
PS: Só se isso não for te causar transtorno.
Grato!
O caso é o seguinte: é um projeto de faculdade, o professor deu para a gente um ´esqueleto´ de um programa pronto para a gente trabalhar em cima. Eu já tenho uma grande experiência com programação há muitos anos mas costumo trabalhar com VB. O caso é que o professor tem um estilo de programação que eu não acho muito legal (ele utiliza componentes do tipo databound, que eu acho pouco profissional), e como eu não tenho prática com Delphi estou apanhando à beça!
Acaba que estou ficando frustrado e desanimado, pois já bati cabeça pra caramba em cima desse problema e não consegui descobrir o que há de errado.
Se eu lhe mandasse o meu projeto você daria uma olhada nele para mim?
PS: Só se isso não for te causar transtorno.
Grato!
GOSTEI 0
Beppe
30/04/2004
Pode mandar, mas naum prometo nada...
GOSTEI 0
Aroldo Zanela
30/04/2004
Se eu lhe mandasse o meu projeto você daria uma olhada nele para mim?
PS: Só se isso não for te causar transtorno.
Grato!
Colega,
Poste o fragmento de código no fórum, pois você aumenta as changes de ter seu problema solucionado por mais pessoas, bem como, poderá ser útil para outros no futuro.
GOSTEI 0