como liberar memória

Delphi

26/12/2006

bom galera, meu problema é o seguinte:

Estou usando uma procedure que esta em uma ´DLL´ e estou fazendo assim:

type
  Reg_Tabela = packed record
    Tab_Arquivo: array[0..19] of Char;
    Tab_Registros: Integer;
  end;

  procedure DLLNCR(var ATabela: Reg_Tabela); stdcall; external ´gerancr.dll´;

procedure TfrmTabela.btnGeraTabela;
var Tabela: Reg_Tabela;
begin

  try
    Tabela.Tab_Arquivo := ´´;
    Tabela.Tab_Registros := 0 ;
    { : Aqui executo a dll }
    DLLNCR(Tabela);
    TxtArquivo.Text := Tabela.Tab_Arquivo;
    TxtRegistros.Text := IntToStr(Tabela.Tab_Registros);
  except
    Application.MessageBox(´ERRO ao compactar a tabela [ NOS.SEM ]´, ´DllNcr´,
                                                            MB_OK+MB_ICONERROR);
  end;

end;



até ai beleza, a consigo executar a procedure da dll.
porem quando fecho o aplicativo da um erro: abre uma tela ´CPU´ e o erro:
faulted with message: ´access violation at 0X61046d46 read of address 0X00000000´


[b:cbc2dafe4c]obs:[/b:cbc2dafe4c] o programa faz tudo que precisa fazer apenas não consigo eliminar essa mensagem ao fechar o programa


Fabiano Góes

Fabiano Góes

Curtidas 0

Respostas

Nerdex

Nerdex

26/12/2006

Goes, se vc usa o Delphi 7.1, 7.0 ou inferiores, sugiro que vc introduza a FastMM, que é o novo gerenciador de memória, este mesmo usado no Delphi 2005/2006. Vc também, poderá configurá-lo para capturar os vazamentos de memória que casualmente poderão vir a existir. E outra coisa, pq vc não tenta dar um DISPOSE / FREE nesse packed record após seu uso?


GOSTEI 0
Fabiano Góes

Fabiano Góes

26/12/2006

NerdeX, obrigado pela atenção, vou procurar pelo ´FastMM´.

mais como eu faço:
DISPOSE / FREE nesse packed record após seu uso?


valeu !!!


GOSTEI 0
POSTAR