Jump to content

dev botao

Correções


Edson
Go to solution Solved by Edson,
  • Este tópico foi criado há 2775 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.

Edited by Edson
Link to comment
Share on other 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 to comment
Share on other 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..

Edited by Edson
Link to comment
Share on other 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 to comment
Share on other sites

  • 1 year later...

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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.