Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão para TACBrTXTClass.LFill


  • Este tópico foi criado há 1213 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

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;

Editado por Renan Eustaquio
Link para o comentário
Compartilhar em outros sites

  • Consultores
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.

  • Obrigado 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

  • Fundadores

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...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

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.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

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

  • Consultores
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

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

  • Consultores
Em 28/09/2020 at 10:05, Renan Eustaquio disse:

posso fazer ?

Pode sim.

[]'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 mês depois ...
  • Moderadores

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

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

  • Moderadores
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

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

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

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1213 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.