ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Resolvido - Erro Memory allocation failed

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
welington_quatro14
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 26 de Julho de 2012
Mensagens: 139

MensagemEnviada: Qui Mar 30, 2017 9:44 am    Assunto: Resolvido - Erro Memory allocation failed Responder com Citação

Bom dia.

Estou com um problema de Memory allocation failed dentro de uma função.
Código:
Código:
function TfrmOP.VerificaSeTituloFoiBaixado(const pFilial: Integer; const pFornecedor: String; const pNumeroDocto: Integer;
  const pSerie: String; const pParcela: Integer): Boolean;
var
  vQry: TConexaoQuery;
begin
  try
    Result := False;

    vQry := Conexao.GetNewQuery;
    with vQry do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select first 1 nmr_op, dat_pagto');
      SQL.Add('  from pagconta');
      SQL.Add(' where nmr_docto = :nmr_docto');
      SQL.Add('   and cdg_filial = :cdg_filial');
      SQL.Add('   and cdg_fornecedor = :cdg_fornecedor');
      SQL.Add('   and dcr_serie = :dcr_serie');
      SQL.Add('   and nmr_parcela = :nmr_parcela');
      SQL.Add('   and dat_cancel is null');
      ParamByName('nmr_docto').AsInteger := pNumeroDocto;
      ParamByName('cdg_filial').AsInteger := pFilial;
      ParamByName('cdg_fornecedor').AsString := pFornecedor;
      ParamByName('dcr_serie').AsString := pSerie;
      ParamByName('nmr_parcela').AsInteger := pParcela;
      Open;

      if (vQry.FieldByName('dat_pagto').AsDateTime > 0) then
      begin
        Result := True;
      end;
    end;
  except
    on E: Exception do
    begin
      raise ETraceException.Create('TfrmOP.VerificaSeTituloFoiBaixado', E);
    end;
  end;
end;


Isso está dentro de um while, e acontecer quando tem muitos registros para processar.
Alguém sabe o que pode ser?


Editado pela última vez por welington_quatro14 em Qui Mar 30, 2017 10:05 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qui Mar 30, 2017 10:00 am    Assunto: Responder com Citação

Poste o comando while para que o pessoal possa analisar melhor seu código.

chegou a debugar para saber exatamente onde está ocorrendo o erro?

reparei também que a função cria a cada execução uma nova instância para a variável vQry, porém não limpa a mesma da memória após a sua execução, no final da function, experimente colocar um FreeAndNil(VQry);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
welington_quatro14
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 26 de Julho de 2012
Mensagens: 139

MensagemEnviada: Qui Mar 30, 2017 10:02 am    Assunto: Responder com Citação

leo_cj escreveu:
Poste o comando while para que o pessoal possa analisar melhor seu código.

chegou a debugar para saber exatamente onde está ocorrendo o erro?

reparei também que a função cria a cada execução uma nova instância para a variável vQry, porém não limpa a mesma da memória após a sua execução, no final da function, experimente colocar um FreeAndNil(VQry);


Consegui resolver, faltando um "FreeAndNill" na query, e passou despercebido.

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB