GARANTIR DESCONTO

Fórum Dúvida sobre descarregar form da memória... Cafree ou Nil? #186463

06/10/2003

0

Bom dia companheiros...
Vejam se podem me ajudar...

Estou criando os form´s do meu sistema em tempo de execução, e descarregando da memória da seguinte forma:

Para criar eu utilizo:
frmEscritorios := TfrmEscritorios.create(Self);

Para descarregar da memória utilizo no onclose do form:
Action := caFree;



Eu vi um projeto onde para descarregar o form da memória, além de utilizar Action := CAfree, o programador também colocava Form1 := Nil.
Então ficava assim:
Action := caFree;
Form1 := Nil;

Esse comando Nil, tem a mesma função do CaFree?
Devo utilizar os dois juntos para realmente descarregar o form da memória?
Será queda forma como estou fazendo, utilizando somente o CaFree, o form ainda continua carregado na memória?

Um grande abraço a todos...
Pablo - Marília/SP
Um grande abraço a todos


Pablo_lima

Pablo_lima

Responder

Posts

06/10/2003

Cebikyn

vc pode usar apenas um método, pessoas que usam os dois querem apenas ter ´certeza´ de que estão liberando o form, é apenas frescura, pode usar do jeito que está fazendo.


Responder

Gostei + 0

06/10/2003

Beppe

Atribuir nil para uma variavel do tipo objeto não a libera da memória, apenas serve para avisar que ela não é mais válida, para evitar erros do tipo:

Form1.Free;
...
// código que não usa Form1
...
if Assigned(Form1) then Form1.Show;


Quando Form1.Free executa, ele libera a memória usada por ele mas deixa um dangling pointer(variável referênciando memória já dealocada).

Então é aconselhável atribuir nil após um Free, ou alternativamente, apenas chamar FreeAndNil(objeto).

O caFree é usado no lugar de Free somente dentro de OnClose.

Ataliba.


Responder

Gostei + 0

06/10/2003

Rfpsatin

Action = caFree é muito usado qdo vc trabalha com MDI.

C vc estiver usando uma versão do delphi 5 ou 6 pode usar da seguinte forma.

try
Form1:=Tform1.create(self);
Form1....
finally
FreeAndNil(Form1);
end;

Este método, FreeAndNil, faz exatamente o q o nome sujere, é um dos + indicados (Marco Cantù).


Responder

Gostei + 0

05/06/2010

Lucas Tertuliano

Olá, eu estava com um problema desses. Executava o programa e quando fechava, ele continuava ocupando a memoria mesmo com o action =: caFree, precisaca chamar o gerenciador do windows para poder fechá-lo. Tentei o nil também, mas não funcionaou. Então depois tentar muitas outras opções descobri uma que me serviu. Coloquei Application.Terminate; abaixo do action =: caFree; e funcionou. ex: Action := caFree; //ação do objeto TCloseAction para fechar a tela
Application.Terminate; // Fecha sua aplicação
Responder

Gostei + 0

05/06/2010

Marco Salles

Como o amigo consegui desenterrar um tópico de 2003 ( do forum antigo ) ?????????   mistérios.....     Histórico do tópico:

# Ação Autor ação Data 186463 Chamado iniciado Pablo_Lima 10/6/2003 186464 Chamado resp. pelo usuario
cebikyn 10/6/2003 186465 Chamado resp. pelo usuario
Beppe 10/6/2003 186466 Chamado resp. pelo usuario
rfpsatin 10/6/2003 378929 Chamado resp. pelo usuario
Lucas Tertuliano 6/5/2010 6:07:32 PM 378932 Chamado resp. pelo usuario
MARCO ANTONIO SALLES 6/5/2010 6:46:18 PM
Responder

Gostei + 0

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

Aceitar