Ir para conteúdo
  • Cadastre-se

dev botao

Correções


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

Recommended Posts

Bom dia.

Estava com problema na geração do bloco do SPED em relação aos espaços no final.

Verifiquei que tem a função que retira, mas esta com um erro de lógica.

 

function TACBrTXTClass.RFill(Value: String;
                             Size: Integer = 0;
                             Caracter: Char = ' '): String;
begin
  /// Se a propriedade TrimString = true, Result retorna sem espaços em branco
  /// iniciais e finais.
  if FTrimString then
     Result := Trim(Value);

  if (Size > 0) and (Length(Value) > Size) then
     Result := Copy(Value, 1, Size)
  else
     Result := Value + StringOfChar(Caracter, Size - Length(Value));

  if Caracter = '?' then
     Result := FDelimitador + StringReplace(Result, ' ', Caracter, [rfReplaceAll])
  else
     Result := FDelimitador + Result;
end;

 

A Função esta dando trim no resulte e abaixo ele usa o Value passado na função... então fiz o acerto da seguinte maneira...

 

Value := Trim(Value);
 

o Mesmo problema esta para o LFill.

 

 

Obrigado a todos.

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

Obrigado pelo relato, correção implementada de forma a atender a situação relatada, e já disponível no repositório.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Obrigado pelo relato, correção implementada de forma a atender a situação relatada, e já disponível no repositório.

Bom dia

Isaque, obrigado pelo retorno, mas a lógica esta errada.

Vi que colocou

 

  if FTrimString then

     Result := Trim(Value);

 

Mas a manipulação esta em cima do result

Result := Value + StringOfChar(Caracter, Size - Length(Value));

...

Result := FDelimitador + Result;

 

neste caso não teria que ser

 

  if FTrimString then

     Result := Trim(Result);

 

Obrigado..

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

Ops, obrigado corrigido e disponível.

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Bom dia, vi que o post é antigo mas não achei nenhum recente sobre o assunto. 

A validação

  Result := FDelimitador + Result;

  /// Se a propriedade TrimString = true, Result retorna sem espaços em branco
  /// iniciais e finais.
  if FTrimString then
     Result := Trim(Result);

está sendo feita após adicionar o delimitador ao result, dessa forma se Value possuir um espaço no início, o mesmo não será removido.

Fiz um teste com o registro C170 do SPED Fiscal, onde a informação ref. a descrição do produto possuía espaços no início e no fim, no final ele remove normal, mas do início ele ignora pois a string possui antes dos espaços o delimitador.

Sugestão: mudar para:

  /// Se a propriedade TrimString = true, Result retorna sem espaços em branco
  /// iniciais e finais.

  if FTrimString then
     Result := Trim(Result);

  Result := FDelimitador + Result;

 

Esqueci de mencionar que os testes fiz apenas com o LFill, porém no RFill também ocorre.

Outra sugestão é remover o delimitador da string antes de adicioná-lo na posição correta, dessa forma evita que a informação final possua delimitador em local incorreto.

Em anexo arquivo com as mudanças propostas.

ACBrTXTClass.pas

Link para o comentário
Compartilhar em outros sites

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