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:

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

Dannicléo Teles

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:

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

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

Aceitar