Ir para conteúdo
  • Cadastre-se

Waldir Paim

Moderadores
  • Total de ítens

    610
  • Registro em

  • Última visita

  • Days Won

    4

Tudo que Waldir Paim postou

  1. @hleorj Sem problemas, acredito que o código que sugeri não está fora do padrão da linguagem que utilizamos e foi a primeira alternativa que me veio a mente. Fique a vontade para mudar para função proposta sem qualquer problema, tanto que o código é uma proposta e sempre vale a implementação final aplicado pelos mantenedores.
  2. @Daniel Simoes Conseguimos chegar num acordo sobre as outras units do post anterior e já foram aplicadas. Segue mais algumas untis para remoção de avisos. Na unit pcnLeitor.pas removi um retorno desnecessário na function TLeitor.CarregarArquivo. Na function CRTTocRegTrib da unit pcnConversao troquei um case por um array. Precisei herdade de TPersistent a classe TRetInfEvento da unit pcnEventoNFe isso remove os hints. fiz o mesmo para TDFeSSL da unit ACBrDFeSSL. E fazendo um resumo geral sobrou alguns avisos perdidos e a pasta ACBrSerial com a grande maioria, posso trabalhar nela com sua permissão. ACBrDFeSSL.pas pcnConversao.pas pcnLeitor.pas pcnEventoNFe.pas
  3. Obrigado @Isaque Pinheiro Verifiquei que você manteve a função StrToIndNatPJImporta. Só mais essa alteração e te prometo que não te incomodo mais com isso. Poderia por favor aplicar essa alteração na função que você não removeu? Da forma como ela está esta com duplicação de código e ainda retorna avisos na IDE. function StrToIndNatPJImporta(const AValue: string): TACBrIndNatPJ; begin Result := StrToIndNatPJ( AValue ); end;
  4. Oi Daniel, Sim adicionei as units, estou ajustando elas nesse post http://www.projetoacbr.com.br/forum/topic/25503-melhorias-nos-arquivos-acbrepcbloco_0-e-acbrepcbloco_m/#comment-191813 com o @Isaque Pinheiro. Ele já aplicou uma delas de vou verificar com ele o que devemos fazer.
  5. @Isaque Pinheiro, Achei pertinente continuar nesse post pelo motivo que descrevei abaixo. Fiz a inclusão do campo Vazio no array por motivo dessa informação aqui na unit ACBrEPCBlocos Nela possui essa função : function CstIcmsToStr(AValue: TACBrCstIcms): string; begin Result := CstIcms[ Integer( AValue ) ]; end; Onde a conversão estaria errado sem a inclusão proposta na unit que ele não aplicou. A alteração foi aplicada para contemplar o resultado para essa função : function StrToCstIcms(AValue: String): TACBrCstIcms; var ifor: Integer; begin Result := sticmsNenhum; <<<<retorno para remover avisos da IDE. for ifor := 0 to High(CstIcms) do begin if AValue = CstIcms[ifor] then begin Result := TACBrCstIcms( ifor ); Break; end; end; end;
  6. Muito obrigado @Isaque Pinheiro. Vou criar um outro post para gente discutir a necessidade ou não dessa alteração.
  7. Oi Daniel, Ficou muito bom e com isso conseguimos resolver praticamente todos os avisos da pasta do ACBBoleto. Aproveitando para não perder o costume fiz a remoção de alguns avisos nas units abaixo. Na unit ACBrEPCBlocos inclui retorno em algumas funções que permitiram e possuíam enumeradores que indicavam Vazio ou Nenhum. Em outras funções da mesma unit precisei gerar uma exceção para remover os avisos e com isso aquetar a minha IDE. Tambem removi a função StrToIndNatPJImporta que possui a mesma funcionalidade da StrToIndNatPJ e nesse caso pode ser utilizado sem problemas. Na unit ACBrTXTUtils apenas adicionei um valor no array para identificar o valor vazio. Estou a disposição se precisar de mais esclarecimentos e fique a vontade para corrigir algum equivoco que possa ter passo. ACBrEPCBloco_0.pas ACBrTXTUtils.pas
  8. Fiz uma atualização nas melhorias e também resolvi alguns avisos de função sem retorno. Gostaria que um dos responsáveis e ou mantenedores analisassem as units em questão e se por algum motivo o código em si não colaborar ou não atender os critérios de qualidade exigidos pelo projeto me apontasse para que eu consiga corrigir e colaborar de forma objetiva e produtiva. Agora simplesmente não aplicar ou ignorar é uma falta de respeito com os usuários e colaboradores comprometidos com o crescimento do projeto. Vou anexar aqui as units das melhorias e no tópico referente a remoção de avisos postarei apenas as units que removem os avisos. Se precisar de algum esclarecimento sobre o código estou a disposição e com muita disposição para sanar quaisquer tipo duvidas que ainda pairam no código. ACBrEFDBloco_0.pas ACBrEPCBlocos.pas ACBrEPCBloco_M.pas ACBrEPCBloco_0.pas ACBrTXTUtils.pas
  9. @Daniel Simoes Conforme descrito no post anterior, não me detive aos avisos de conversão do tipo W1057 e W1058 e com isso consegui remover todos das units da pasta ACBrBoleto. Fiz o máximo para manter as units o mais inalteradas possíveis. Num resumo breve vou tentar descrever as alterações: Remoção de variáveis não utilizadas. Inicialização de variáveis não inicializadas. Adicionei uma função para conseguir override na classe base. Acredito que essas alterações não devam gerar efeitos colaterais algum no funcionamento atual. Segue anexo. ACBrBoleto.zip
  10. @Pedro_Manoel Verifica se sua variável local é do mesmo tipo da variável esperada pela função. Eu estou usando aqui no Delphi Seatle e funciona tudo certinho, inclusive muito mais rápido em alguns casos. Estou a disposição se precisar de ajuda para resolver. Mas antes nos conte de seu ambiente. Qual sua versão de Delphi?
  11. Ok, Vou tentar ser mais especifico. Qual banco está testando? Qual modelo do boleto utilizado? Qual numero da carteira? Enfim passe todos os dados para simular o seu problema. Se puder preencher o exemplo e anexar ele aqui eu simulo para você, eu tenho Delphi 7 e posso tentar te ajudar. Suas informações são vagas e não tem como simular sem os dados para teste. Eu uso o componente e já testei aqui e não consegui simular o problema. Eu já tive problemas com o Delphi 7 usando objetos, acredito que você também pode fazer um teste adicionando o FastMM no teste do ACBr e tentar gerar novamente. Segue link para download caso resolva fazer os teste e não possua https://sourceforge.net/projects/fastmm/. Lembre-se de adicionar na primeira unit do projeto. Ainda se sobrar alguma duvida posta ai.
  12. Oi @Marcelo Carvalho, Se você conseguir anexar um exemplo eu posso tentar te ajudar a resolver isso. Anexo somente os fontes sem o exe, pode ser o do próprio do ACBr mas preenchido com os dados que causam o problema. Dessa forma podemos sugerir a correção especifica ou uma que possa até prevenir essa situação numa outra ocasião.
  13. Oi Daniel, Alem da noticia do adiamento da obrigatoriedade do CEST, que achei bem oportuna, sua noticia eu curti muito. Como pode observar em quase sua totalidade os casts são aplicados pela IDE e serão feitos mesmo se a gente não os fizer. Eu já tinha adotado outra estratégia, aqui na minha base local fiz essa alteração para limpar minha lista de avisos: Apliquei isso no arquivo ACBr.inc, fiz o mesmo para o Fortes Report, com isso posso me focar apenas nos avisos mais importantes do projeto e de minha aplicação. Como já estou com meu ambiente configurado vou seguindo com essa nova tática e tentar contribuir com o crescimento e qualidade do código sempre que possível. Devo me deter a outros tipos de avisos, pois os W0157 e W1058 não são mais listados aqui pra mim nos fontes que uso o ACBr. Fique a vontade para sugerir uma nova forma de enfrentar essa tarefa que ainda estou empenhado em te ajudar a resolver o mais breve possível.
  14. Aproveitei e já removi umas variáveis não utilizadas e alguns outros ajustes nas units; ACBrBALMuller.pas ACBrBALRinnert.pas ACBrBALToledo2090.pas
  15. Segue duas unit que podem te ajudar a compilar seu projeto. Acredito que em breve os mantenedores da unit ou do projeto devem lançar uma correção definitiva. Salva elas na pasta ACBrSerial e tenta instalar o componente novamente. ACBrBALMuller.pas ACBrBALRinnert.pas
  16. Quem, seguimos desse ponto. Vou voltar contigo as funções usadas na quebra da string. Até chegar ao ponto onde o ACBr entrega para o ECF. Não tenho a impressora aqui para testar por isso preciso de sua ajuda para gente resolver isso.
  17. @Intelliware Veja pra mim por favor se com essa função o problema ocorre! Essa função é a original sem alterações. function AjustaLinhas(Texto: AnsiString; Colunas: Integer ; NumMaxLinhas: Integer = 0; PadLinhas: Boolean = False): AnsiString; Var Count,P,I : Integer ; Linha, CurrLineBreak : AnsiString ; begin { Trocando todos os #13+#10 por #10 } CurrLineBreak := sLineBreak ; if (CurrLineBreak <> #13+#10) then Texto := AnsiString(StringReplace(String(Texto), #13+#10, #10, [rfReplaceAll])) ; if (CurrLineBreak <> #10) then Texto := AnsiString(StringReplace(String(Texto), String(CurrLineBreak), #10, [rfReplaceAll])) ; { Ajustando a largura das Linhas para o máximo permitido em "Colunas" e limitando em "NumMaxLinhas" o total de Linhas} Count := 0 ; Result := '' ; while ((Count < NumMaxLinhas) or (NumMaxLinhas = 0)) and (Length(Texto) > 0) do begin P := pos(#10, String( Texto ) ) ; if P > (Colunas + 1) then P := Colunas + 1 ; if P = 0 then P := min( Length( Texto ), Colunas ) + 1 ; // somar 2 quando encontrar uma tag para não quebrar ela if (Copy(Texto, P-1, 1) = '<') or (Copy(Texto, P-2, 2) = '</') then inc(P, 2); I := 0 ; if copy(Texto,P,1) = #10 then // Pula #10 ? I := 1 ; Linha := copy(Texto,1,P-1) ; // Remove #10 (se hover) if PadLinhas then Result := Result + PadRight( Linha, Colunas) + #10 else Result := Result + Linha + #10 ; Inc(Count) ; Texto := copy(Texto, P+I, Length(Texto) ) ; end ; { Permitir impressão de uma linha em branco } if Result = '' then Result := Result + #10; end; Ela é da unit ACBrUtil. Precisa remover o const da declaração anterior. Vou rever a logica da versão que atual.
  18. @Intelliware Vamos fazer um teste? Na linha 4397 da unit ACBrECFClass.pas inclui por favor esse código abaixo: Relatorio.SaveToFile('c:\relatorio_gerencial.txt'); Mude o caminho para o destino que preferir ai. Confira pra gente se o conteúdo está correto ou se foi cortado antes desse ponto. Vou continuar dai pra frente se ele estiver certo ou dai pra traz se ele já chegou cortado. Continuo aqui nos testes
  19. @Intelliware, Obrigado pelo retorno, me ajuda bastante na tarefa que estou determinado a concluir. Depois de sua resposta ainda ficou algumas duvidas: Pelo que entendi o problema já ocorria antes dessas alterações? Você está usando impressora fiscal ECF? Qual o trecho que ele perde? Qual sua versão de Delphi ou está usando o Free Pascal/Lazarus? Pra mim essas respostas ajudam a tentar compreender melhor o que ocorre.
  20. Graça, boa tarde. Você tem os fontes do Fortes ai nessa maquina? Se sim o caminho dessa pasta está no path do seu delphi? Da uma conferida nesses dois pontos que pode ser esse o motivo.
  21. Oi Daniel, Sem problemas, fazemos da forma que você sugeriu. Fazendo uma analise geral já foi removido grande parte dos avisos. A grande maioria agora se concentra nas pastas do Serial, TEF e Boleto e DF-e PCN (esses dois eu já anexei as units) e como te falei nos projetos de terceiros principalmente no Fortes. Como trata-se de a grande maioria de código mantido por ti eu vou tentar te mandar tudo zipado no inicio da semana que vem. Mas grande parte dos usuários poderiam se manifestar e relatar possíveis anomalias decorrente das alterações, mas isso é de cada um e não tenho como julgar. Estamos ai dispostos a limpar todos esses monte de avisos e você ta com o pé no acelerador controla ai.
  22. Eu gostei da iniciativa. Mas minha ideia será utilizar REST mesmo na rede local, estou trabalhando nessa semana para resolver a questão do CEST, mas semana que vem pretendo me dedicar 100% do tempo para terminar o nosso HttpServer para responder as requisições. Depois do server rodando acredito que os clientes não serão tão complicados assim e podemos ir trocando ideias de qual logica é mais aplicada.
  23. Pretendo aproveita o máximo possível da sua logica até para não precisar invetar a roda novamente. Concordo plenamente contigo, preferencialmente as grandes empresas que dominam uma grande parte do mercado.
  24. Que bom, Na semana que vem quando passar o período da inclusão do CEST vou dar uma organizado aqui no que tenho e o que você liberou. Você não respondeu esse trecho: Se puder usar vou converte ele para Postgress para conseguir usar na nossa Api. Trabalho com clientes de supermercado e alguns chegam ter mais de 40 mil itens no mix e uma ferramenta dessa ajuda muito manter as coisas organizadas.
×
×
  • 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.