[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 --- 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??
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??
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 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??
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]