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á 2534 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

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_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

Segue então os arquivos alterados.

Qualquer dúvida só entrar em contato.

 

Um abraço!

ACBrSpedContabil_Alterado.zip

Editado por leandropaixao

Leandro Paixão

[email protected]

 

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

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

@leandropaixao

 

 

Link para o comentário
Compartilhar em outros sites

Olá pessoal!

 

Realizei mais algumas alterações nos fontes, pois conforme o tamanho do arquivo ainda acontecia estouro de memória!

Segue em anexo, qualquer coisa só avisar!!

 

ACBrECDContabil_Alterado.zip

Leandro Paixão

[email protected]

 

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

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

@leandropaixao

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Olá Pessoal!

Em nossos testes identificamos que o totalizador do registro I052 não estava aparecendo, realizei uma alteração no fonte para contabilizar este registro.

 

 

ACBrSPEDContabil.7z

  • 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

 

 

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

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.
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • Consultores

 

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.
Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

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.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

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
 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Este tópico foi criado há 2534 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.