Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.935
  • Registro em

  • Última visita

  • Days Won

    127

Tudo que EMBarbosa postou

  1. Quais foram os parâmetros que você utilizou? Essa procedure tem dois muito importantes neste caso, Documentos e Finalidade.
  2. Acho que o André já subiu uma versão para testes: Só não sei se tem isso que foi mencionado nesse tópico.
  3. 2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]".
  4. Acho que o comando que você quer é o TACBrECF.ArquivoMFD_DLL(). Poderia verificar?
  5. Verifique como é feito no programa de Exemplo do ACBrTEFD.
  6. Qual a sua IDE?
  7. Muitos tem visto que o código dependendo do tamanho do BD do seu cliente algumas operações podem ficar muito lentas. Em especial notamos isso na geração dos arquivos como SPED e Sintegra. Então, na medida do possível, estou analisando aqui alguns métodos que são muitas vezes utilizados e podem fazer grande diferença no código para otimizá-los, fazendo-os serem executados com o mínimo de tempo possível. Especificamente neste caso, as vezes o problema está na constante alocação de memória e redimensionamento das strings. Vejam um exemplo o código do método ACBrUtil.TiraPontos. O método atual é executado várias vezes nos registros Sintegra. A seguinte linha abaixo causa realocação de memória ao redimensionar a string xStr toda vez que é executada: xStr := xStr + str[i] Podemos remover essa realocação por inicializar a string no começo e apenas redimensioná-la no final. Nos meus testes isso reduziu o tempo de execução em pouco mais de 80%. Quer dizer, se você utiliza esse método várias vezes chegando ao tempo total de aproximadamente 1,33 segundos, o tempo gasto depois de corrigido é de menos de 0,23 segundos. Criei o projeto abaixo para demonstrar como isso pode afetar o código quando é executado muitas vezes. Assim outros podem testar e ver a otimização. program project; {$APPTYPE CONSOLE} uses SysUtils, ACBrUtil, Diagnostics; function TiraPontosX(Str: string): string; const InvalidChars : set of char = ['/',',','-','.',')','(',',',' ']; var i, Count: Integer; begin SetLength(Result, Length(str)); Count := 0; for i := 1 to Length(str) do begin if not (str[i] in InvalidChars) then begin inc(Count); Result[Count] := str[i]; end; end; SetLength(Result, Count); end; var st1: TStopwatch; c: Extended; s: string; I,N: Integer; begin try { TODO -oUser -cConsole Main : Insert code here } st1 := TStopwatch.Create; for N := 1 to 3 do begin st1.Start; for I := 0 to 3000000 do begin s := ACBrUtil.TiraPontos('0.0'); end; st1.Stop; c := st1.ElapsedMilliseconds; Writeln(FloatToString(c)); st1.Reset; end; for N := 1 to 3 do begin st1.Start; for I := 0 to 3000000 do begin s := TiraPontosX('0.0'); end; st1.Stop; c := st1.ElapsedMilliseconds; Writeln(FloatToString(c)); st1.Reset; end; Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. Aproveitei para adicionar alguns testes para esse método específico e não causar nenhum problema ao inserir a otimização. (: Essa não é uma mudança que resolve todos os problemas. O método precisa ser chamado muitas vezes para começarmos a ver diferenças. Mas se fizermos isso com mais funções, com certeza teremos uma execução muito mais rápida. Conseguindo fazer o mesmo com outros métodos avisarei aqui nesse tópico.
      • 5
      • Curtir
  8. Acho que não entendi a diferença. Um arquivo .dpk é um package ou pacote. O que poderia ter mudado é o nome do pacote ou do arquivo dpk.
  9. É porque ela precisa uma porta COM para funcionar com o ACBrECF. Essa porta COM pode ser virtual, talvez utilizando o driver da Bematech.
  10. Olá Luiz, Como você mesmo descobriu, o problema não é na parte do FlushFileToDisk. Poderia ser se você não tivesse atualizado seu código e estivesse sendo usado o Flush do Drive inteiro. O que poderia ser então? Lógico que sem ver a máquina é difícil de dizer, mas eu começaria a olhar por coisas benignas (Antivírus, Firewall, AntiMalware, aplicativos de proteção bancária, aplicativos de aceleração que varrem os arquivos mais utilizados) e vírus e Malwares... Falando sobre antivírus, eu me lembro de ter tido um problema parecido em um cliente. O detalhe era que mesmo desabilitando o Antivírus, ele ainda continuava varrendo os arquivos. Não bastava marcar o Antivírus para ficar inativo por um tempo. Nós tivemos que colocar o executável, o banco de dados, os arquivos temporários do TEF e o arquivo AAC na lista de arquivos confiáveis dele. Finalmente, resolvemos trocar de antivírus e resolveu... Só que já não me lembro qual foi o antivírus...
  11. Na verdade, seria melhor você dizer qual foi o erro "bobo". Isso poderia ajudar a outros que passarem pelo mesmo problema.
  12. Mas o Fortes Report mudou o modo de instalação para o quê?
  13. Tópico duplicado?
  14. Essa parte do código é da biblioteca Synapse...
  15. Era no código. Corrigido na revisão 8770.
  16. Foi pro SVN... Como eu pessoalmente não utilizo o SPED Contabil, precisamos que façam os testes.
  17. Acho que é a limitação máxima Isaque, quer dizer tamanho máximo do campo. De qualquer maneira, acho que eu não subi essas modificações. Pedi para abrir um novo tópico para analisar com calma e não poluir esse.
  18. 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?
  19. Aqui parece normal. Você está com os códigos atualizados? Qual é o ambiente de desenvolvimento que está utilizando? Você instalou utilizando o ACBrInstall?
  20. Beleza. Então faz assim, se perceber que tem mais algum ajuste pra ser feito, crie um novo tópico por favor. Assim não vamos confundir o assunto e ficar perdidos. Muito obrigado mais uma vez pelas contribuições.
  21. Enviei ao SVN a contribuição. Favor testarem. Não consegui instalar o pacote no Lazarus. Deve precisar de algum ajuste. Só que Lazarus ainda não é meu forte.
×
×
  • 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...