Renan Eustaquio 32 Posted September 11, 2020 Report Share Posted September 11, 2020 (edited) Essa função de function TACBrTXTClass.LFill(const Value: String; Size: Integer = 0; Nulo: Boolean = false; Caracter: Char = '0'): String; poderia ter um incremento Value := StringReplace(Result, FDelimitador,'', [rfReplaceAll]) , pois acaba que se o value passado possuir o delimitador gera erro no arquivo. exemplo spedfiscal se tiver no nome do produto um "|" ele gera um erro grotesco no sped, para eu corrigir isso em todos os lugares q são texto tenho que usar o StringReplace. isso poderia ser feito ? function TACBrTXTClass.LFill(const Value: String; Size: Integer = 0; Nulo: Boolean = false; Caracter: Char = '0'): String; begin if (Nulo) and (Length(Value) = 0) then begin Result := FDelimitador; Exit; end; /// Se a propriedade TrimString = true, Result retorna sem espaços em branco /// iniciais e finais. if FTrimString then Result := Trim(Result); Value := StringReplace(Value, FDelimitador,'', [rfReplaceAll]) if (Size > 0) and (Length(Value) > Size) then Result := Copy(Value, 1, Size) else Result := StringOfChar(Caracter, Size - length(Value)) + Value; Result := FDelimitador + Result; end; Edited September 11, 2020 by Renan Eustaquio Link to post Share on other sites
EMBarbosa 3,385 Posted September 18, 2020 Report Share Posted September 18, 2020 Em 11/09/2020 at 13:40, Renan Eustaquio disse: Essa função de function TACBrTXTClass.LFill(const Value: String; Size: Integer = 0; Nulo: Boolean = false; Caracter: Char = '0'): String; poderia ter um incremento Value := StringReplace(Result, FDelimitador,'', [rfReplaceAll]) , pois acaba que se o value passado possuir o delimitador gera erro no arquivo. exemplo spedfiscal se tiver no nome do produto um "|" ele gera um erro grotesco no sped, para eu corrigir isso em todos os lugares q são texto tenho que usar o StringReplace. Olá Obrigado pela análise. Realmente existe essa limitação na função. Em 11/09/2020 at 13:40, Renan Eustaquio disse: isso poderia ser feito ? function TACBrTXTClass.LFill(const Value: String; Size: Integer = 0; Nulo: Boolean = false; Caracter: Char = '0'): String; begin if (Nulo) and (Length(Value) = 0) then begin Result := FDelimitador; Exit; end; /// Se a propriedade TrimString = true, Result retorna sem espaços em branco /// iniciais e finais. if FTrimString then Result := Trim(Result); Value := StringReplace(Value, FDelimitador,'', [rfReplaceAll]) if (Size > 0) and (Length(Value) > Size) then Result := Copy(Value, 1, Size) else Result := StringOfChar(Caracter, Size - length(Value)) + Value; Result := FDelimitador + Result; end; Na minha opinião, não seria interessante, porque vai incluir uma responsabilidade que não pertence a essa função. O certo seria tratar o nome do produto antes de enviar ao componente. Mas vamos aguardar outros desenvolvedores do ACBr pra ver se concordam com isso. 1 []'s Elton Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 to post Share on other sites
Juliomar Marchetti 3,860 Posted September 18, 2020 Report Share Posted September 18, 2020 O componente serve para gerar o arquivo os dados devem ser tratados pelo desenvolvedor antes de alimentar o componente Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Fundadores Daniel Simoes 8,705 Posted September 18, 2020 Fundadores Report Share Posted September 18, 2020 Sempre achei uma má escolha do Sped, usar Pipes como delimitadores de campo... Mas realmente isso deve ser tratado do lado da aplicação... afinal poderíamos maquiar erros ou modificar textos, sem a permissao do usuario... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
BigWings 3,992 Posted September 18, 2020 Report Share Posted September 18, 2020 O ideal seria o validador aceitar o caractere "|", talvez com um caractere de escape... Eu até acho que pode ser feita a implementação, mas deve haver uma forma de permitir que o desenvolvedor decida o que fazer com o caractere, e não apenas remover, pra isso seria preciso nova ou novas propriedades. Seria um adendo à TrimString que já está sanitizando a entrada. PS: Dividi o tópico do anterior. BigWingsAjude o Projeto ACBr crescer - Assine o SAC Link to post Share on other sites
Renan Eustaquio 32 Posted September 21, 2020 Author Report Share Posted September 21, 2020 Em 18/09/2020 at 09:54, BigWings disse: O ideal seria o validador aceitar o caractere "|", talvez com um caractere de escape... Eu até acho que pode ser feita a implementação, mas deve haver uma forma de permitir que o desenvolvedor decida o que fazer com o caractere, e não apenas remover, pra isso seria preciso nova ou novas propriedades. Seria um adendo à TrimString que já está sanitizando a entrada. PS: Dividi o tópico do anterior. Concordo com o bigwiggs , Imagina vc ter que tratar tudo em todos lugares pra remover uma coisa que vai gerar erro, mesmo que a responsabilidade seja do desenvolvedor que opção ele vai ter alem de remover o caracter ?? Link to post Share on other sites
EMBarbosa 3,385 Posted September 21, 2020 Report Share Posted September 21, 2020 6 horas atrás, Renan Eustaquio disse: Concordo com o bigwiggs Conforme o que o BigWings disse: Em 18/09/2020 at 09:54, BigWings disse: Eu até acho que pode ser feita a implementação, mas deve haver uma forma de permitir que o desenvolvedor decida o que fazer com o caractere, e não apenas remover, pra isso seria preciso nova ou novas propriedades. Nesse caso, seria necessário implementar essa nova ou novas propriedades na classe para poder tratar essa situação, lembrando de manter o comportamento atual como padrão. []'s Elton Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 to post Share on other sites
Renan Eustaquio 32 Posted September 28, 2020 Author Report Share Posted September 28, 2020 (edited) posso fazer ? Edited September 28, 2020 by Renan Eustaquio Link to post Share on other sites
EMBarbosa 3,385 Posted October 1, 2020 Report Share Posted October 1, 2020 Em 28/09/2020 at 10:05, Renan Eustaquio disse: posso fazer ? Pode sim. []'s Elton Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 to post Share on other sites
Renan Eustaquio 32 Posted November 16, 2020 Author Report Share Posted November 16, 2020 Segue anexo alteração , fiz algumas alterações na criação do SpedFiscal no set dos campos , pois os mesmos da forma que estavam não aplicavam para os registros filhos (me embasei no spedPisConfins) ACBrSpedPisCofins.pas ACBrSpedFiscal.pas ACBrTXTClass.pas 1 Link to post Share on other sites
Juliomar Marchetti 3,860 Posted November 16, 2020 Report Share Posted November 16, 2020 Já está no backlog para avaliação Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Juliomar Marchetti 3,860 Posted November 17, 2020 Report Share Posted November 17, 2020 No svn. validei com lazarus e delphi, também rodei os exemplos só falta uma coisa analisar os demais que usam e propagar essa mudança pois só tem para fiscal e pis cofins Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Renan Eustaquio 32 Posted November 17, 2020 Author Report Share Posted November 17, 2020 vc mesmo vai fazer isso ou precisa que eu faça algo? Link to post Share on other sites
Juliomar Marchetti 3,860 Posted November 17, 2020 Report Share Posted November 17, 2020 48 minutos atrás, Renan Eustaquio disse: vc mesmo vai fazer isso ou precisa que eu faça algo? Se quiser ajudar a fazer pois é bastante componentes que fazem uso. será de uma grande ajuda Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Renan Eustaquio 32 Posted November 25, 2020 Author Report Share Posted November 25, 2020 Realizado a implementações nas outras classes, acredito ter feito em todas. Aproveitei e acertei no create o default de algumas variáveis que não estavam sendo passadas de forma correta. Espero que esteja tudo correto , caso necessário é só da o grito ai que revejo o erro. ACBrLFD.pas ACBrPonto.pas ACBrSEF2.pas ACBrSpedContabil.pas ACBrSpedECF.pas ACBrSpedFiscal.pas ACBrSpedPisCofins.pas ACBrTXTClass.pas UACBrLCDPR.pas ACBrADRCST.pas ACBrDeSTDA.pas 1 Link to post Share on other sites
Renan Eustaquio 32 Posted December 1, 2020 Author Report Share Posted December 1, 2020 Desculpe incomodar , tem previsão de por no svn? Link to post Share on other sites
Juliomar Marchetti 3,860 Posted December 1, 2020 Report Share Posted December 1, 2020 Feito no svn vou fechar o tópico . obrigado Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Recommended Posts