Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
welington_quatro14 Aprendiz

Registrado: Quinta-Feira, 26 de Julho de 2012 Mensagens: 139
|
Enviada: Qui Mar 30, 2017 9:44 am Assunto: Resolvido - Erro Memory allocation failed |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Mar 30, 2017 10:00 am Assunto: |
|
|
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 |
|
 |
welington_quatro14 Aprendiz

Registrado: Quinta-Feira, 26 de Julho de 2012 Mensagens: 139
|
Enviada: Qui Mar 30, 2017 10:02 am Assunto: |
|
|
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 |
|
 |
|