TListView Delphi - Access Violation

Delphi

27/05/2019

Bom dia!
Estou tendo uma dificuldade me limpar a memória dos objetos alocados no meu TListView.
Fiz um pequeno exemplo populando um TListView.

  try
    oClienteController := TClienteController.Create;
    oList := TObjectList<TObject>.Create(True);

    oList := oClienteController.Pesquisar(edtPesquisa.Text);

    if oList.Count > 0 then
    begin
      lstConsulta.Clear;
      for I := 0 to oList.Count -1 do
      begin
        oCliente := TCliente.Create;
        oCliente := oList.Items[i] as TCliente;

        lstViewItem := lstConsulta.Items.Add;
        with lstViewItem do
        begin
          Caption     := IntToStr(oCliente.Id);
          SubItems.Add(oCliente.Nome);
          SubItems.Add(oCliente.CPF);
          SubItems.Add(oCliente.RG);
          SubItems.Add(oCliente.Telefone);
          Data := oCliente;
        end;

      end;
      lstConsulta.ItemIndex := 0;

      oCliente := lstConsulta.Selected.Data;
    end;

  finally
    oClienteController.Destroy;
    oClienteController := nil;
    oClienteController.Free;
  end;


No evento OnDeletion coloquei o código abaixo.

if Item.Data <> nil then 
begin 
  TObject(Item.Data).Destroy; 
  Item.Data := nil; 
end; 


porém no Destroy está dando Access Violation.

o que poderia ser?
Elpidio Baberge

Elpidio Baberge

Curtidas 0
POSTAR