Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde estou tendo um problema ao compilar meu projeto para 64 bits, 

percebi que no método Split da unit ACBrNFeDANFEFRDM esta tento um erro de conversão, quando compilo em 32 bits funciona. 

 

Conteúdo de exemplo 

 

ADelimiter = ;

AString = 'MD-5:A6C08B76C773BFA72347A2F902D8CFB7;DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL;NACIONAL CONF. LC 123/2006.;NAO GERA DIREITO A CREDITO FISCAL DE IPI.'

Postado
  Em 29/01/2018 at 18:16, Gutierres disse:

Boa tarde estou tendo um problema ao compilar meu projeto para 64 bits, 

percebi que no método Split da unit ACBrNFeDANFEFRDM esta tento um erro de conversão, quando compilo em 32 bits funciona. 

 

Conteúdo de exemplo 

 

ADelimiter = ;

AString = 'MD-5:A6C08B76C773BFA72347A2F902D8CFB7;DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL;NACIONAL CONF. LC 123/2006.;NAO GERA DIREITO A CREDITO FISCAL DE IPI.'

Expandir  

Companheiros como estava precisando utilizar em versão 64bits, fiz esse ajuste nos fontes para mim funcionou.

 

ACBrNFeDANFEFRDM.pas

  • Curtir 1
  • Moderadores
Postado
  Em 31/01/2018 at 17:53, Gutierres disse:

Companheiros como estava precisando utilizar em versão 64bits, fiz esse ajuste nos fontes para mim funcionou.

 

ACBrNFeDANFEFRDM.pasFetching info...

Expandir  

Usou algum tipo de formatador de fontes?

tem muitas alterações.

pegue o fonte do svn e altere somente o necessário para a possível correção.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)
  Em 31/01/2018 at 18:09, Juliomar Marchetti disse:

Usou algum tipo de formatador de fontes?

tem muitas alterações.

pegue o fonte do svn e altere somente o necessário para a possível correção.

Expandir  

Desculpa uso sim GExpert força do hábito

 

function TACBrNFeFRClass.Split(const ADelimiter, AString: string): TSplitResult;
var
  vRows: TStrings;
  vI: Integer;
begin
  vRows := TStringList.Create;
  try
    vRows.Delimiter := ADelimiter[1];
    vRows.StrictDelimiter := True;
    vRows.DelimitedText := AString;
    SetLength(Result, vRows.Count);

    for vI := 0 to vRows.Count - 1 do
      Result[vI] := vRows.Strings[vI];

  finally
    FreeAndNil(vRows);
  end;
end;

Editado por Gutierres
  • 3 semanas depois ...
Postado

Bom dia pessoal

Tive que reverter as alterações na minha pasta do ACBr pois as informações complementares saiam sempre com quebra de linha onde havia espaço.

Há alguma propriedado no TACBrDANFeFR a ser alterada após a atualização?

 

  • Moderadores
Postado
  Em 19/02/2018 at 12:15, Thobias Sobczak disse:

Bom dia pessoal

Tive que reverter as alterações na minha pasta do ACBr pois as informações complementares saiam sempre com quebra de linha onde havia espaço.

Há alguma propriedado no TACBrDANFeFR a ser alterada após a atualização?

 

Expandir  

A princípio não .

por favor queria debugar e ver o que acontece pra não haver a quebra de linha com o código acima postado

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Boa tarde.

Para resolver o problema da quebra de linha basta alterar o método TACBrNFeFRClass.Split da unit ACBrNFeDANFEFRDM.pas, abastecendo a propriedade StrictDelimiter como True:

...

function TACBrNFeFRClass.Split(const ADelimiter, AString: string): TSplitResult;
var
  vRows: TStrings;
  vI: Integer;
begin
  vRows := TStringList.Create;
  try
    vRows.StrictDelimiter := True;
    vRows.Delimiter := ADelimiter[1];
    vRows.DelimitedText := AString;
    SetLength(Result, vRows.Count);

    for vI := 0 to vRows.Count - 1 do
      Result[vI] := vRows.Strings[vI];

  finally
    FreeAndNil(vRows);
  end;
end;

...

Segue anexo a unit ACBrNFeDANFEFRDM.pas para averiguação.

ACBrNFeDANFEFRDM.pas

Postado (editado)
  Em 19/02/2018 at 17:27, Juliomar Marchetti disse:

Esse é o problema se habilitar quebro a compatibilidade com versões anteriores do delphi!

Expandir  

Encontrei uma outra maneira para resolver o problema da quebra de linha sem quebrar a compatibilidade com versões anteriores do delphi.

Alterei o método TACBrNFeFRClass.Split da unit ACBrNFeDANFEFRDM.pas, substituindo a linha:

vRows.DelimitedText := AString;

por:

vRows.DelimitedText :=  '"' + StringReplace(AString, ADelimiter, '"' + ADelimiter + '"', [rfReplaceAll]) + '"' ;

Segue anexo a unit ACBrNFeDANFEFRDM.pas para averiguação.

 

ACBrNFeDANFEFRDM.pasFetching info...

Editado por Marcílio Jr
  • Obrigado 1
Postado
  Em 19/02/2018 at 18:06, Marcílio Jr disse:

Encontrei uma outra maneira para resolver o problema da quebra de linha sem quebrar a compatibilidade com versões anteriores do delphi.

Alterei o método TACBrNFeFRClass.Split da unit ACBrNFeDANFEFRDM.pas, substituindo a linha:

vRows.DelimitedText := AString;

por:

vRows.DelimitedText :=  '"' + StringReplace(AString, ADelimiter, '"' + ADelimiter + '"', [rfReplaceAll]) + '"' ;

Segue anexo a unit ACBrNFeDANFEFRDM.pas para averiguação.

 

ACBrNFeDANFEFRDM.pasFetching info...

Expandir  

Fazendo essa alteração funcionou comigo, vou aplicar aqui também temporariamente enquanto a Unit é averiguada. Obrigado!

  • Obrigado 1
Postado
  Em 20/02/2018 at 20:28, Paulo Alexandre Hostert disse:

Boa tarde,

Mesmo atualizando fonte para mim o problema persiste.

Voltei a function splic com o código anterior de novembro de 2017.

Expandir  

 

  Em 20/02/2018 at 21:37, BigWings disse:

Qual versão do Delphi?

Expandir  

 

  Em 20/02/2018 at 22:24, Paulo Alexandre Hostert disse:

Boa noite

10.2.2

Expandir  

Bom dia.

Outra possibilidade seria refatorar o método TACBrNFeFRClass.Split da unit ACBrNFeDANFEFRDM.pas verificando a versão do delphi:

 

function TACBrNFeFRClass.Split(const ADelimiter, AString: string): TSplitResult;
var
  vRows: TStrings;
  vI: Integer;
begin
  vRows := TStringList.Create;
  try
    vRows.Delimiter := ADelimiter[1];
    // Delphi 2006 em diante
    If RTLVersion >= 18 Then
    Begin
      vRows.StrictDelimiter := True;
      vRows.DelimitedText   := AString;
    End
    // Versões Anteriores ao Delphi 2006
    Else
      vRows.DelimitedText :=  '"' + StringReplace(AString, ADelimiter, '"' + ADelimiter + '"', [rfReplaceAll]) + '"' ;

    SetLength(Result, vRows.Count);

    for vI := 0 to vRows.Count - 1 do
      Result[vI] := vRows.Strings[vI];

  finally
    FreeAndNil(vRows);
  end;
end;

 

Segue anexo a unit ACBrNFeDANFEFRDM.pas para averiguação.

ACBrNFeDANFEFRDM.pas

  • Curtir 1
Postado (editado)

Bom dia.

A função Split é utilizada também nas impressões em FR de CT-e e MDF-e, causando o mesmo problema relatado aqui ao compilar em 64 bits.
Para facilitar a manutenção, movi a função para o ACBrUtil.pas, juntamente com o tipo TSplitResult retornado pela mesma.

Como sugestão para remover Hints e Warnings, aposentei as funções SubstrCount e Explode nas units modificadas, além da função CollateBr na unit ACBrGNREGuiaFRDM, as quais não são utilizadas.

Segue fontes modificados para avaliação.
Testado no Delphi 7 e 10.1 Berlin.

Fontes.zip

Editado por Allan Wolski
Faltou anexo.
  • Curtir 1
  • Moderadores
Postado
  Em 22/02/2018 at 11:37, Allan Wolski disse:

Bom dia.

A função Split é utilizada também nas impressões em FR de CT-e e MDF-e, causando o mesmo problema relatado aqui ao compilar em 64 bits.
Para facilitar a manutenção, movi a função para o ACBrUtil.pas, juntamente com o tipo TSplitResult retornado pela mesma.

Como sugestão para remover Hints e Warnings, aposentei as funções SubstrCount e Explode nas units modificadas, além da função CollateBr na unit ACBrGNREGuiaFRDM, as quais não são utilizadas.

Segue fontes modificados para avaliação.
Testado no Delphi 7 e 10.1 Berlin.

Fontes.zipFetching info...

Expandir  

Bom dia

no svn suas sugestões 

Obrigado.

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

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

The popup will be closed in 10 segundos...