Ir para conteúdo
  • Cadastre-se

dev botao

'out Of Memory' Ao Salvar Arquivo Txt


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

Recommended Posts

Postado

Bom dia pessoal!
 
Estou com o seguinte problema na empresa em que trabalho:
- Geramos o SPED Contábil para um cliente que possui muitas movimentações, assim os blocos I200 e I250 chegam a ter 2 milhões de registros. Ao gerar o SPED de 12 meses, em cerca de 50 minutos ocorre o estouro de memória. Debugando as units, identifiquei que o problema ocorre na hora de carregar as informações para a StringList, exatamente na função SaveStringList, na unit ACBrSpedContabil, quando carrega os registros na chamada :

if Bloco_I.RegistroI200.Count > 0 then AStringList.Add(Trim(WriteRegistroI200));

Para resolver este problema aqui na empresa, por enquanto, alterei a forma de salvar: em vez da StringList, estou utilizando um arquivo txt, que a cada linha informada do bloco I200 eu salvo no arquivo txt.

 

Não validamos aqui todas as informações do arquivo, mas a estrutura do arquivo já está ok.

 

Existe alguma alteração e/ou correção para este ponto? Ou alguém que utiliza a mesma rotina e tem um volume parecido de informações, já passou por isso?

 

O PC que utilizamos para teste é um Dell Vostro - Pentium Dual Core - 3 GB de Ram.

 

Desde já agradeço a atenção de todos.

Leandro Paixão

[email protected]

 

Tecnólogo em Análise e Desenvolvimento de Sistemas.

Professor do Curso de Técnico em Informática.

@leandropaixao

 

 

  • Moderadores
Postado

Bom dia!

iria sugerir usar a propriedade LinhasBuffer, que faz a gravação diretamente no txt, mas fui olhar e o código só está implementando ao fiscal e piscofins!

caso queira contribuir com o projeto e implementar isso no contábil se sinta a vontade para isso!

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • 2 semanas depois ...
Postado

Bom dia!

iria sugerir usar a propriedade LinhasBuffer, que faz a gravação diretamente no txt, mas fui olhar e o código só está implementando ao fiscal e piscofins!

caso queira contribuir com o projeto e implementar isso no contábil se sinta a vontade para isso!

Bom dia Juliomar!

Realizei algumas alterações para salvar diretamente no TXT.

Para quem posso mandar os arquivos para avaliação/teste?

 

Fico no aguardo.

Um abraço

Leandro Paixão

[email protected]

 

Tecnólogo em Análise e Desenvolvimento de Sistemas.

Professor do Curso de Técnico em Informática.

@leandropaixao

 

 

  • Consultores
Postado

Pode anexar aqui mesmo no fórum, por favor.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 3 semanas depois ...
  • 1 mês depois ...
  • Consultores
Postado

Olá Leandro,

 

  Fui analisar o seu código hoje mas notei que no código anexo houve implementação de eventos. Gostaria de saber o motivo.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Olá Leandro,

 

  Fui analisar o seu código hoje mas notei que no código anexo houve implementação de eventos. Gostaria de saber o motivo.

 

Bom dia Barbosa!

Já tinha comentado com o Isaque Pinheiro em outro post e estou realizando a alteração para retirada destes eventos.

 

Um abraço

  • Curtir 1

Leandro Paixão

[email protected]

 

Tecnólogo em Análise e Desenvolvimento de Sistemas.

Professor do Curso de Técnico em Informática.

@leandropaixao

 

 

  • Consultores
Postado

Valeu Leandro. Assim que puder e tiver alguma novidade, avise. Bom trabalho aí!

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Valeu Leandro. Assim que puder e tiver alguma novidade, avise. Bom trabalho aí!

 

Boa tarde Barbosa!

 

Segue os fontes alterados conforme orientações.

Foram realizadas as seguintes alterações:

- Alteração na forma de salvar o arquivo, retirando de stringList e passando a utilizar o conceito de linhasbuffer (já implementado no Fiscal e PisCofins, na qual originou este tópico)

- Alteração no registro I051  que possui o campo COD_ENT_REF para o leiaute 2 e no leiaute 3 passou a ser COD_PLAN_REF. (alterei este nome pois conforme informações o leiaute 2 foi revogado)

 

Realizei as alterações conforme orientações nesse na qual foi passado pelo Isaque Pinheiro.

Se houver algum problema por favor me avise.

 

Um abraço.

 

ArquivosACBR.7z

 

 

 

Leandro Paixão

[email protected]

 

Tecnólogo em Análise e Desenvolvimento de Sistemas.

Professor do Curso de Técnico em Informática.

@leandropaixao

 

 

  • Consultores
Postado

Olá Leandro,

 

  Me parece que está tudo certo. Só uma pergunta, foi necessário a mudança dos métodos WriteRegistroxxxx de function para procedure, ou você fez isso mesmo para padronizar o código?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Olá Leandro,

 

  Me parece que está tudo certo. Só uma pergunta, foi necessário a mudança dos métodos WriteRegistroxxxx de function para procedure, ou você fez isso mesmo para padronizar o código?

Olá Barbosa!

Foi necessário sim, pois a forma de salvar o arquivo é diferente!!!

Leandro Paixão

[email protected]

 

Tecnólogo em Análise e Desenvolvimento de Sistemas.

Professor do Curso de Técnico em Informática.

@leandropaixao

 

 

  • Consultores
  • Solution
Postado

Olá Barbosa!

Foi necessário sim, pois a forma de salvar o arquivo é diferente!!!

Foi pro SVN... Como eu pessoalmente não utilizo o SPED Contabil, precisamos que façam os testes.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado (editado)
Estou com problemas ao compilar o pacote ACBrSPED
 
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas(1541) Error: Object or class type required
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas(1543) Error: Object or class type required
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBloco_0.pas(46) Fatal: Could not compile used unit '..\..\..\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas'
 
O problema é aqui comigo ou nos fontes do componente?
 
Ontem a tarde estava com outros erros, mas atualizei hoje e resolveu, só ficou esses ai citados acima
 
OBS: Delphi 7
Editado por evandromira
  • Curtir 1
  • Consultores
Postado

 

Estou com problemas ao compilar o pacote ACBrSPED
 
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas(1541) Error: Object or class type required
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas(1543) Error: Object or class type required
C:\acbr\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBloco_0.pas(46) Fatal: Could not compile used unit '..\..\..\Fontes\ACBrSPED\ACBrSPEDPisCofins\ACBrEPCBlocos.pas'
 
O problema é aqui comigo ou nos fontes do componente?
 
Ontem a tarde estava com outros erros, mas atualizei hoje e resolveu, só ficou esses ai citados acima
 
OBS: Delphi 7

 

Era no código. Corrigido na revisão 8770.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 4 meses depois ...
Postado

Olá Leandro,

 

  Me parece que está tudo certo. Só uma pergunta, foi necessário a mudança dos métodos WriteRegistroxxxx de function para procedure, ou você fez isso mesmo para padronizar o código?

Olá Barbosa!

Foi necessário sim, pois a forma de salvar o arquivo é diferente!!!

Boa noite, tudo bem ?

Por um acaso você não teria um exemplo Do Bloco I Principalmente do Registro I052 ? Pois estou com dificuldade nesse trecho.

Obrigado.

  • 2 semanas depois ...
  • Membros Pro
Postado

Boa Noite !
Depois da Atualização do Trunk2 começou a ocorrer esse erro de estouro de memória. 
Em dados de clientes com muito movimento...
Pode ter havido algum problema na migração ?
Alguém mais está tendo esse problema ?

Obrigado !
Pontelo
ESSystem
 

  • 4 semanas depois ...
  • Consultores
Postado

Boa Noite !
Depois da Atualização do Trunk2 começou a ocorrer esse erro de estouro de memória. 
Em dados de clientes com muito movimento...
Pode ter havido algum problema na migração ?
Alguém mais está tendo esse problema ?

Obrigado !
Pontelo
ESSystem
 

Não... Você tem algum exemplo em como reproduzir o problema? Eu não utilizo o SPED Contabil.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 ano depois...
Postado

Olá,

 

  Como faço para usar o salvamento diretamente no txt para não usar tanta memória?

   Basta configurar o linhas buffer e a cada bloco criado chamar o write_blocoXXXX?

 

Obrigado

  • Este tópico foi criado há 2780 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.