Variáveis públicas perdendo conteúdo na herança!!!

Delphi

30/04/2004

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]


Yankleber

Yankleber

Curtidas 0

Respostas

Beppe

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

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!!!!


GOSTEI 0
Beppe

Beppe

30/04/2004

Deve ser uma typecast maliciosa, antes de chamar o tal método...


GOSTEI 0
Yankleber

Yankleber

30/04/2004

O que exatamente vem a ser isso???
Eu sou novatoem Delphi...

Grato!


GOSTEI 0
Beppe

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

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!


GOSTEI 0
Beppe

Beppe

30/04/2004

Pode mandar, mas naum prometo nada...


GOSTEI 0
Aroldo Zanela

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
POSTAR