Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2427 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 16: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.'

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

 

ACBrNFeDANFEFRDM.pas

  • Curtir 1
  • Moderadores
Postado
14 minutos atrás, Gutierres disse:

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

 

ACBrNFeDANFEFRDM.pas

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: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)
28 minutos atrás, 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.

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
30 minutos atrás, 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?

 

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: [email protected]
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
5 minutos atrás, Juliomar Marchetti disse:

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

Vou procurar outra solução aqui.

Obrigado por alertar.

Postado (editado)
40 minutos atrás, Juliomar Marchetti disse:

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

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

Editado por Marcílio Jr
  • Obrigado 1
Postado
18 horas atrás, 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.pas

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

  • Obrigado 1
  • Moderadores
Postado
1 hora atrás, 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.

Qual versão do Delphi?

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

Projeto ACBr

 

 

Postado
15 horas atrás, 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.

 

14 horas atrás, BigWings disse:

Qual versão do Delphi?

 

13 horas atrás, Paulo Alexandre Hostert disse:

Boa noite

10.2.2

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 08: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.zip

Bom dia

no svn suas sugestões 

Obrigado.

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

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