[delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

2008-10-20 Por tôpico Fellipe Henrique
Amigos, tenho o seguinte codigo;

if Assigned(fRelBasic) then
  fRelBasic.Free;

As vezes, sim as vezes... abre uma Violação de Acesso no  fRelBasic.Free e
realmente existe o form, pois eu o vejo... e não tem codigo nenhum no
OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele, não
previne de entrar no Free caso ele não esteja na memória? Ou não!?

[]s

-- 
_
T.·.F.·.A.·.
Fellipe Henrique

---
CAMPANHA POR UMA INTERNET SEGURA
Proteja o endereço de seus amigos como estou protegendo o seu. Ao enviar
mensagens use SEMPRE o Cco (cópia oculta).
Assim TODOS os endereços estarão preservados. E, claro, antes de encaminhar
um e-mail, delete todas as informações que apareçam no corpo do e-mail e que
possam ser usadas por hackers.
###


[As partes desta mensagem que não continham texto foram removidas]



RE: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

2008-10-20 Por tôpico Rubem Nascimento da Rocha

A função Assigned() testa se um determinado ponteiro ou variável procedural tem 
o valor nil. Vale ressaltar que, em essência, uma instância de objeto também é 
um ponteiro. Fazer este teste não garante que aquela instância ou ponteiro não 
esteja apontando para local algum. Ou seja, vc pode estar fazendo um 
fRelBasic.Free para desalocar o objeto da memória, mas depois vc está 
garantindo que fRelBasic receba um valor nil para indicar que, além de 
liberado, a instância aponta para lugar algum?

Deduzo pelo nome da instância que vc deve estar fazendo algum tipo de chamada 
genérica para um relatório. Sendo assim, minha sugestão de código pra vc seria 
a seguinte:

if Assigned(fRelBasic) then
begin
  fRelBasic.Free;
  fRelBasic := nil;
end;

Ou ainda,

if Assigned(fRelBasic) then
  FreeAndNil(fRelBasic);

Esta última sugestão, além de desalocar a instância, atribui o valor nil à 
mesma.

Boa sorte.
Sds.


___
To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Mon, 20 Oct 2008 13:45:31 -0300
Subject: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

Amigos, tenho o seguinte codigo;

if Assigned(fRelBasic) then
fRelBasic.Free;

As vezes, sim as vezes... abre uma Violação de Acesso no fRelBasic.Free e
realmente existe o form, pois eu o vejo... e não tem codigo nenhum no
OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele, não
previne de entrar no Free caso ele não esteja na memória? Ou não!?

[]s

--
_
T.·.F.·.A.·.
Fellipe Henrique

_
Confira vídeos com notícias do NY Times, gols direto do Lance, videocassetadas 
e muito mais no MSN Video!
http://video.msn.com/?mkt=pt-br

RE: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

2008-10-20 Por tôpico Rubem Nascimento da Rocha

A função Assigned() testa se um determinado ponteiro ou variável procedural tem 
o valor nil. Vale ressaltar que, em essência, uma instância de objeto também é 
um ponteiro. Fazer este teste não garante que aquela instância ou ponteiro não 
esteja apontando para local algum. Ou seja, vc pode estar fazendo um 
fRelBasic.Free, mas depois está garantindo que fRelBasic receba um nil para 
indicar que, além de liberado, a instância aponta para lugar algum?

Deduzo pelo nome da instância que vc deve estar fazendo algum tipo de chamada 
genérica para um relatório. Sendo assim, minha sugestão de código pra vc seria 
a seguinte:

if Assigned(fRelBasic) then
begin
  fRelBasic.Free;
  fRelBasic := nil;
end;

Ou ainda,

if Assigned(fRelBasic) then
  FreeAndNil(fRelBasic);

Esta última sugestão, além de desalocar a instância, atribui o valor nil à 
mesma.

Boa sorte.
Sds.


To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Mon, 20 Oct 2008 13:45:31 -0300
Subject: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

Amigos, tenho o seguinte codigo;

if Assigned(fRelBasic) then
fRelBasic.Free;

As vezes, sim as vezes... abre uma Violação de Acesso no fRelBasic.Free e
realmente existe o form, pois eu o vejo... e não tem codigo nenhum no
OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele, não
previne de entrar no Free caso ele não esteja na memória? Ou não!?

[]s

--
_
T.·.F.·.A.·.
Fellipe Henrique

_
Confira vídeos com notícias do NY Times, gols direto do Lance, videocassetadas 
e muito mais no MSN Video!
http://video.msn.com/?mkt=pt-br

Re: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

2008-10-20 Por tôpico Joao Morais
2008/10/20 Fellipe Henrique [EMAIL PROTECTED]:
 Amigos, tenho o seguinte codigo;

if Assigned(fRelBasic) then
  fRelBasic.Free;

 As vezes, sim as vezes... abre uma Violação de Acesso no  fRelBasic.Free e
 realmente existe o form, pois eu o vejo... e não tem codigo nenhum no
 OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele, não
 previne de entrar no Free caso ele não esteja na memória? Ou não!?

Você não precisa desta construção, basta apenas

fRefBasic.Free;

Caso fRefBasic aponte para nil, o free não fará nada. Agora, se
fRefBasic aponta para alguma coisa, o destructor será chamado. Se essa
coisa não for um objeto ou for um objeto que já foi destruído...
kabum. Popularmente conhecido como corrompimento de memória.

Joao Morais


Re: [delphi-br] Pode dar um erro no Free sendo precedido de um Assigned??

2008-10-20 Por tôpico Fellipe Henrique
Na Verdade é um DataModule.. vou tentar o FreeAndNil, qualquer coisa posto
aqui... obrigado

[]s

2008/10/20 Joao Morais [EMAIL PROTECTED]

   2008/10/20 Fellipe Henrique [EMAIL PROTECTED] fellipeh%40gmail.com:

  Amigos, tenho o seguinte codigo;
 
  if Assigned(fRelBasic) then
  fRelBasic.Free;
 
  As vezes, sim as vezes... abre uma Violação de Acesso no fRelBasic.Free e
  realmente existe o form, pois eu o vejo... e não tem codigo nenhum no
  OnDestroy desse Form... de qualquer forma, o Assigned lá em cima dele,
 não
  previne de entrar no Free caso ele não esteja na memória? Ou não!?

 Você não precisa desta construção, basta apenas

 fRefBasic.Free;

 Caso fRefBasic aponte para nil, o free não fará nada. Agora, se
 fRefBasic aponta para alguma coisa, o destructor será chamado. Se essa
 coisa não for um objeto ou for um objeto que já foi destruído...
 kabum. Popularmente conhecido como corrompimento de memória.

 Joao Morais
  




-- 
_
T.·.F.·.A.·.
Fellipe Henrique

---
CAMPANHA POR UMA INTERNET SEGURA
Proteja o endereço de seus amigos como estou protegendo o seu. Ao enviar
mensagens use SEMPRE o Cco (cópia oculta).
Assim TODOS os endereços estarão preservados. E, claro, antes de encaminhar
um e-mail, delete todas as informações que apareçam no corpo do e-mail e que
possam ser usadas por hackers.
###


[As partes desta mensagem que não continham texto foram removidas]