Destruindo referência a Objetos
No meu Form eu crio instâncias de um form dinâmicamente, da seguinte forma:
Procedure XXXXX;
Var
Form: Tform;
begin
Form := Tform.create(self);
Form := Form1; //Passando o Form1 para a variavel Form;
.
. //operações normais...
.
form.release // aqui está o problema
end;
O problema está em como liberar a memória para a Variavel Form, sem fechar o form1 que foi passado para a variável Form ?
Valeu galera...
Procedure XXXXX;
Var
Form: Tform;
begin
Form := Tform.create(self);
Form := Form1; //Passando o Form1 para a variavel Form;
.
. //operações normais...
.
form.release // aqui está o problema
end;
O problema está em como liberar a memória para a Variavel Form, sem fechar o form1 que foi passado para a variável Form ?
Valeu galera...
Cabal
Curtidas 0
Respostas
Antseralves
05/10/2006
form := nil;
GOSTEI 0
Marco Salles
05/10/2006
eu entendo o seguinte
Quando voce faz Form:=Form1,
voce esta atribuindo o ponteiro de form1 para o Form. Nesse momento tanto o objeto Form quanto o objeto Form1 aponta para a mesma posição da memoria , fazendo com que os mesmo passem a referir-se ao mesmo objeto , enquanto que o espaço da memoria que fora reservado quando voce alocou memoria usando o Create , ficara naõ referido , ou seja , sem referencia e portanto não tem como acessa-la
Construçoes desse tipo devem ser evitas no contexto Object pascal
Quando voce faz Form:=Form1,
voce esta atribuindo o ponteiro de form1 para o Form. Nesse momento tanto o objeto Form quanto o objeto Form1 aponta para a mesma posição da memoria , fazendo com que os mesmo passem a referir-se ao mesmo objeto , enquanto que o espaço da memoria que fora reservado quando voce alocou memoria usando o Create , ficara naõ referido , ou seja , sem referencia e portanto não tem como acessa-la
Construçoes desse tipo devem ser evitas no contexto Object pascal
GOSTEI 0
Siam
05/10/2006
Se é que entendí; quando vc faz:E depois:Já era; vc terá um memory-leak em relação ao Form criado pq vc perdeu a referência.
Form := Tform.create(self);
Form := Form1;
GOSTEI 0