Fórum Invalid Pointer Operation ao usar FreeAndNil para liberar o objeto #506572
07/01/2015
0
Prezados,
Estou tendo problemas "Invalid Pointer Operation" ao liberar uma classe que criei, segue abaixo um exemplo do código:
Agradeço desde já!
Estou tendo problemas "Invalid Pointer Operation" ao liberar uma classe que criei, segue abaixo um exemplo do código:
function TFrmArAnvHoras.getLogAnterior: TLogAnv; var Log: TLogAnv; begin try Log:= TLogAnv.Create; lcdsHorasInseridas.Prior; log := getLog; Result := Log; finally FreeAndnil(Log); end; end;
Agradeço desde já!
Dannicléo Teles
Curtir tópico
+ 0
Responder
Posts
08/01/2015
Renato Rubinho
Buenos,
Você apontou o retorno da função para a variável log.
Acredito que o erro ocorre porque você está liberando da memória o pointer que apontou para o Result.
Nunca fiz uma função retornando uma classe assim, mas como provavelmente você irá receber o resultado da função em outra variável do tipo TLogAnv, não precisa criar uma nova variável na função e consequentemente não libera, pois será utilizada no retorno da função.
Quando você liberar da memória a variável que recebeu o retorno da função, terá o mesmo efeito.
Acredito que assim funcione:
Abraççç,
rrubinho
Você apontou o retorno da função para a variável log.
Acredito que o erro ocorre porque você está liberando da memória o pointer que apontou para o Result.
Nunca fiz uma função retornando uma classe assim, mas como provavelmente você irá receber o resultado da função em outra variável do tipo TLogAnv, não precisa criar uma nova variável na função e consequentemente não libera, pois será utilizada no retorno da função.
Quando você liberar da memória a variável que recebeu o retorno da função, terá o mesmo efeito.
Acredito que assim funcione:
function TFrmArAnvHoras.getLogAnterior: TLogAnv; begin Result:= TLogAnv.Create; lcdsHorasInseridas.Prior; Result := getLog; end;
Abraççç,
rrubinho
Responder
Gostei + 0
08/01/2015
Dannicléo Teles
Obrigado pela resposta rrubinho, acabei substituindo minha classe por um TRecord, que eliminou a necessidade de criar a classe. Mas o que vc falou faz sentido, vou testar, obrigado mais uma vez!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)