Ir para conteúdo
  • Cadastre-se

dev botao

Loadfromstream Acbrnfse


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

Recommended Posts

Postado

O trecho abaixo: Do nada ao passar para o  RAD Studio XE2, passou dar problema que o arquivo está sendo cortado.

 

O erro acontece ao repassar o valor para ArquivoXML.Text, nessa linha o texto já vem cortado.

A solução paliativa que fiz, foi usar o comando LoadFromString direto do meu campo onde está o RPS, na ocasião estou lendo meu xml direto de um camo BLOB do banco de dados, segue exemplo:

 

        if cdsNFS.FieldByName('XMLRPS_NFS_NOTA').AsString <> '' then
          dmComercial.ACBrNFSe1.NotasFiscais.LoadFromString(cdsNFS.FieldByName('XMLRPS_NFS_NOTA').AsString)
        else if cdsNFS.FieldByName('XMLNFSE_NFS_NOTA').AsString <> '' then
          dmComercial.ACBrNFSe1.NotasFiscais.LoadFromString(cdsNFS.FieldByName('XMLNFSE_NFS_NOTA').AsString)
        else
          raise Exception.Create('XML da NFS-e ou RPS não pode ser lido. Favor verificar a emissão da NFS-e.');
 
Tenho isso gravado no banco pelo fato de cliente perder xml, logo, fica tudo la registrado, e ao emitir é gravado o campo, e para transmitir passo para outra tela... (isso aqui não importa muito, estou dizendo a titulo de explicar...)
 
O estranho é a variavel LocNFSeR.Leitor.Arquivo ter o corte já logo no inicio.
 
Em anexo segue o rps que fiz o load. (note que troquei apenas os dados do emissor e cliente)

 

 

function TNotasFiscais.LoadFromStream(Stream: TStringStream): boolean;
var
 LocNFSeR : TNFSeR;
 ArquivoXML: TStringList;
 XML : AnsiString;
 Tipo: Integer;
{$IFDEF DELPHI2009_UP}
 Encoding : TEncoding;
{$ENDIF}
 CodigoMunicipio, Prestador, RazaoSocial,
 CNPJ, IM, NumeroRPS, SerieRPS, TipoRPS: String;
 ok: Boolean;
begin
  try
   Result     := True;
   LocNFSeR   := TNFSeR.Create(Self.Add.NFSe);
   ArquivoXML := TStringList.Create;
 
   LocNFSeR.Leitor.CarregarArquivo(Stream);
   ArquivoXML.Text := LocNFSeR.Leitor.Arquivo;
   ArquivoXML.Text := StringReplace(StringReplace( ArquivoXML.Text, '&lt;', '<', [rfReplaceAll]), '&gt;', '>', [rfReplaceAll]);
   ArquivoXML.Text := NotaUtil.RetirarPrefixos(ArquivoXML.Text);
 

2015000000161021-Rps.xml

2015000000161021-Rps.xml

  • 2 semanas depois ...
  • 3 semanas depois ...
  • Solution
Postado (editado)

Descobri o que era: Transicao entre Delphi 2007 e XE2

O chato do unicode!

Botei a variavel antes numa string, e usei pelo LoadFromString e funcionou.

 

A saber o caracter era o #0

Editado por Antonio Gomes
  • Este tópico foi criado há 3475 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.