Ir para conteúdo
  • Cadastre-se

dev botao

pdfs de DACTEs em lote -exceção “SIGSEGV'


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

Recommended Posts

Postado

Olá, pessoal,

Sou iniciante no Lazarus e, principalmente, no ACBr e comecei a dar os primeiros passos.

Modifiquei o exemplo ACBrCTE_Exemplo para que ele gerasse pdfs dos DACTE em lote, modificando o OpenDialog para aceitar múltiplas seleções de CTEs.

Em princípio, estava tudo funcionando regularmente, porém, observei que se o número de xmls selecionados for próximo a 5.000, o programa aborta a execução após algum tempo, gerando pdfs apenas de parte dos arquivos xml selecionados, exibindo a seguinte mensagem de erro (mensagem exibida pelo Lazarus): “Projeto XXXXXX elevou classe exceção 'External: SIGSEGV'. No endereço yyyyyyyyy”.

Acredito que seja algum problema de overflow, ou de endereçamento. Tentei me embrenhar pelo componente ACBrCTe e, naturalmente, sem saber nem por onde começar, não tive capacidade para tentar descobrir o que poderia estar causando o problema.

Preciso corrigir o programa para que eu consiga gerar pdfs de DACTEs  em lote, de qualquer quantidade de CTEs que eu venha a selecionar, mesmo que a quantidade seja muito grande. 

Alguém poderia me ajudar a corrigir este erro e resolver este problema? 
 

Muito obrigado 

 

Postado

Olá, amigo,

A aplicação é para auditoria, por isso a necessidade de gerar, em lote, tantos documentos.

O problema ocorre em qualquer computador, independentemente dos recursos de memória e capacidade de processamento.

Comentei a rotina de geração de pdfs:

ACBrCTe1.Conhecimentos.ImprimirPDF;

e inseri:

ShowMessage(inttostr(ACBrCTe1.Conhecimentos.Count);

Isso demonstrou que o problema se encontra no método ImprimirPDF, pois o programa passou a rodar sem interrupções e o ShowMessage me retornou o valor de todos os arquivos que selecionei.

Provacelmente é algum bug do componente. Deve ter faltado algum “free” em algum ponto da rotina “ImprimirPDF”.

Deve ser algo simples de resolver, só não sei onde, exatamente, devo mexer.

Se puder me dar alguma luz, agradeço imensamente.

Forte abraço, 

  • Moderadores
Postado
Em 14/07/2020 at 12:15, slukather disse:

Olá, amigo,

A aplicação é para auditoria, por isso a necessidade de gerar, em lote, tantos documentos.

O problema ocorre em qualquer computador, independentemente dos recursos de memória e capacidade de processamento.

Comentei a rotina de geração de pdfs:

ACBrCTe1.Conhecimentos.ImprimirPDF;

e inseri:

ShowMessage(inttostr(ACBrCTe1.Conhecimentos.Count);

Isso demonstrou que o problema se encontra no método ImprimirPDF, pois o programa passou a rodar sem interrupções e o ShowMessage me retornou o valor de todos os arquivos que selecionei.

Provacelmente é algum bug do componente. Deve ter faltado algum “free” em algum ponto da rotina “ImprimirPDF”.

Deve ser algo simples de resolver, só não sei onde, exatamente, devo mexer.

Se puder me dar alguma luz, agradeço imensamente.

Forte abraço, 

No caso é depurar e passar passo a passo e ver o que está sobrando de componentes ou algo assim.

  • 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
 

 

  • Este tópico foi criado há 1679 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...