Ir para conteúdo
  • Cadastre-se

Erro de memory allocation failed na leitura dos xmls


Ver Solução Respondido por EduXml,
  • Este tópico foi criado há 277 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa Tarde tenho essa função para ler os xmls porém sempre quando atinge por volta dos 4000 xmls lidos apresenta error memory allocation failed  quando tenta carregar um novo xml.

Já tentei colocar o componente AcbrNfce direto na tela também não adiantou.

 

Desde já agradeço qualquer ajuda

function TForm2.SomarXmlsNfce(datai, dataf: Tdate; pdv: integer):Boolean;
var
  listadir : TStringList;
  numeronfc, camxmls : string;
  i,id : integer;
  valornfce, valdesconto, acrescimo, valortotal : Currency;
  ok     : Boolean;
  dataii : Tdate;
  NFeXml : TACBrNFe;
begin
  try
    dataii := datai;
    while dataii <= dataf do
    begin
      NFeXml := TACBrNFe.Create(Application);
      listadir := TStringList.Create;
      try
        camxmls := Camexe + '/cfesfisco/' +
                   FormatDateTime('yyyymm', dataii) + '/' +
                         'sat' + FormatFloat('##000', pdv);
        try
          DirList(camxmls + '/*-nfe.xml',listadir);
          if listadir.Count > 0 then
          begin
            valornfce   := 0;
            valdesconto := 0;
            acrescimo   := 0;
            valortotal  := 0;

            JvSpecialProgress1.Maximum := listadir.Count;
            for i := 0 to listadir.Count - 1 do
            begin
              try
                JvSpecialProgress1.Position :=  JvSpecialProgress1.Position + 1;
                ok := true;
                try
                  NFeXml.NotasFiscais.Clear;
                  NFeXml.NotasFiscais.LoadFromFile(camxmls + '/' + listadir[i]);
                except
                  ok := false;
                end;

                if ok then
                begin
                  if ok then
                  begin
                    JvSpecialProgress1.Caption :=
                                          'PDV' + FormatFloat('##000', pdv) + ' ' +
                                           FormatDateTime('dd/MM/YYYY', dataii) +
                                           ' - ' + listadir.Strings[i];

                    valornfce := NFeXml.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF;
                    valortotal := valortotal + valornfce;
                    for id := 0 to NFeXml.NotasFiscais.Items[0].NFe.Det.Count - 1 do
                    begin
                      ValDesconto := ValDesconto +
                         NFeXml.NotasFiscais.Items[0].NFe.Det.Items[id].Prod.vDesc;

                      Acrescimo := Acrescimo +
                             NFeXml.NotasFiscais.Items[0].NFe.Total.ICMSTot.vOutro;
                    end;
                  end;
                end;
              finally

              end;
            end;
          end;
        except
          on E: Exception do
          ShowMessage('Erro: ' + E.Message );
        end;
      finally
        FreeAndNil(listadir);
        FreeAndNil(NFeXml);
        JvSpecialProgress1.Position := 0;
        JvSpecialProgress1.Caption := '';
        dataii := dataii + 1;
      end;
    end;
  finally

  end;
end;

  • Consultores
Postado

Está usando ACBrXMLdocument?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Opa Boa noite  estou usando o AcbrNfe sem carregar mais nada , mas acho que em algum momento apareceu esse erro de AcbrXmlDocument.

NFeXml := TACBrNFe.Create(Application) faço isso depois NFeXml.NotasFiscais.LoadFromFile e mais nada.

Sempre quando chega a 4000 xmls lido apresenta o erro

Desde já agradeço 

  • Consultores
Postado
4 horas atrás, Eduardo Lima_22327 disse:

Opa Boa noite  estou usando o AcbrNfe sem carregar mais nada , mas acho que em algum momento apareceu esse erro de AcbrXmlDocument.

NFeXml := TACBrNFe.Create(Application) faço isso depois NFeXml.NotasFiscais.LoadFromFile e mais nada.

Sempre quando chega a 4000 xmls lido apresenta o erro

Desde já agradeço 

eu acho que tem até um teste unitário e sei que houve testes massivos

chegou executar ele?

e por curiosidade , carrega tantos junto para imprimir?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

Faço a leitura desses xmls para somar os totais de venda de cada caixa.

Se fizer a leitura somente de um caixa ou desde que não chegue aos 4000 arquivos sem problemas.

Estava usando o Delphi 2006 , mas tentei no 12.2 também deu erro.

Quanto ao teste não usei, vou procurar.

  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 277 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.