Fórum Out of Memory - Tentei corrigir mas ainda persiste o erro #503593
06/12/2014
0
procedure TfGeraSpedFiscal.LimparMemoria;
var
MainHandle: THandle;
begin
Try
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId);
SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF);
CloseHandle(MainHandle);
Except
end;
Application.ProcessMessages;
end;
No final do while, após o Query.Next eu chamo a procedure. Ela funciona, estou acompanhando o consumo de memória pelo gerenciador de tarefas. A memória sem a procedure chega em 40k e com a procedure chega no máximo em 20k, mas mesmo assim ainda está dando o Out of Memory.
Alguém teria uma solução pra isso?
Marlon Minotti
Curtir tópico
+ 0Post mais votado
12/12/2014
Flávyo Henrique
Gostei + 1
Mais Posts
08/12/2014
Douglas
Você sempre chama a procedure LimparMemoria após o next da Query, ou somente quando finaliza o processo da mesma?
Gostei + 0
08/12/2014
Marlon Minotti
Gostei + 0
09/12/2014
Douglas
Gostei + 0
09/12/2014
Marlon Minotti
Gostei + 0
09/12/2014
Douglas
Gostei + 0
09/12/2014
Marlon Minotti
procedure TfGeraSpedFiscal.addProd;
begin
initStatus('Gerando produtos');
loadDataProd(qEmpresa.FieldBYName('codigo').asInteger);
verificaCFOP(xCodEmpresa);
With qItem1 Do
Begin
With SPED.Bloco_0 Do
Begin
Last;
initStatus('Gerando produtos', qItem1.RecordCount);
First;
While Not qItem1.Eof Do
Begin
updStatus;
qItem6.Close;
qItem6.ParamByName('codProd').AsString := qItem1.FieldByName('CODIGO').AsString;
qItem6.Open;
qItem6.First;
With Registro0200New Do
Begin
COD_ITEM := FieldByName('CODIGO').asString;
DESCR_ITEM := trim(Trim(FieldByName('NOME').asString) + ' ' + Trim(FieldByName('APRESENTACAO').asString));
COD_BARRA := trim(Copy(FieldByName('CODIGO_BARRA').asString, 0, 13));
UNID_INV := FieldByName('UND_MED').asString;
if UNID_INV = '' then
begin
UNID_INV := DescrUndMed;
end;
if qItem6.FieldByName('CFOP').AsString = '1556' then
TIPO_ITEM := tiMaterialConsumo
else
begin
TIPO_ITEM := tiMercadoriaRevenda;
COD_NCM := trim(Copy(_soNumero(FieldByName('NCM').asString), 1, 8));
end;
EX_IPI := '';
COD_GEN := Copy(_soNumero(FieldByName('NCM').asString), 1, 2);
COD_LST := '';
End;
qItem1.Next;
limparMemoria;
End;
End;
End;
end;
Gostei + 0
10/12/2014
Douglas
Gostei + 0
11/12/2014
Marlon Minotti
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)