Ir para conteúdo
  • Cadastre-se

dev botao

5 Correções Para Uma Mesma Nfe


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

Recommended Posts

  • Consultores

Boa tarde Márcio,

 

E qual é o problema de totalizar 500 caracteres ou 500 bytes?

 

O XML final a ser enviado para SEFAZ tem que ficar dentro dos 500 Kbytes.

 

E 500 bytes é 1/2 KByte (arredondando).

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Complementando o Italo, lembre que a carta de correção é cumulativa para a nota, a ultima sempre sobrepõe todas as outras, portanto, deve conter sempre todas as correções até o momento.

Como você deseja fazer 5 correções o correto seria fazer as 5 todas em uma mesma CC-e e não fazer 5 em sequencia.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

É que pelo demo do ACBrNFe (infEvento.detEvento.xCorrecao := Correcao;) esta variável para o texto da correção está definida como string (255 caracteres).

Na classe utilizada a propriedade 'xCorrecao' também está como string (255) portanto não dará certo eu colocar 500 caracteres para uma só CCe.

Como eu não sei se alterando a classe detEvento.'xCorreção' de string para widestring poderei afetar negativamente as demais units do ACBrNFe então surgiu a dúvida (ex-idéia..rs) de fazer 5 CCe´s de 100 caracteres cada.

Dessa forma eu acho (me corrijam se eu escrever besteira) que nem criando um form próprio p/ 500 caracteres eu conseguirei o que pretendo. Estou certo?

 

Muito obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você está misturando as coisas, ShortString é que é limitada a 255 caracteres, em delphi o tipo string tem o tamanho de: ~2^30 characters (4 bytes to 2GB) basicamente o limite dela é limitado pela memória se for menos de 2GB e não por tamanho.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Régys,

Primeiramente muito obrigado pelo retorno e pela aula.

Mas porque está ocorrendo o seguinte erro quando compilo o demo:

 

Alterei a linha

infEvento.detEvento.xCorrecao := Correcao;

para

infEvento.detEvento.xCorrecao := 'CFOP Correto......Natureza correta......Transportador.......Dados Adicionais................'  (até completar 500 caracteres)

(isto é, eu digitei o texto que eu preciso no lugar da variável Correcao)

 

Ao compilar o demo dá o seguinte erro exatamente nessa linha que alterei:

"String literals may have at most 255 elements"

 

Por isso eu supus (errado cf vc me mostrou) que uma variável string estava limitada a 255 caracteres.

 

Mas aí, dentro da sua enorme paciência, pergunto:

Por que está dando esse erro exatamente onde eu alterei? (colocando um texto de 500 caracteres no lugar de uma variável)

 

Novamente muito obrigado pela atenção e ajuda.

 

Márcio

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

  • Solution

Márcio,

 

Esta é uma limitação que vem dos tempos do Turbo Pascal, e é interna ao compilador. Constantes (ou "string literals") são limitadas em 255 caracteres, variáveis tipo string, não. O que você precisa fazer é algo do tipo:

  infEvento.detEvento.xCorrecao := 'CFOP Correto......' + // string literal 1 abaixo de 255 caracteres
                                   'Natureza correta..' + // string literal 2 abaixo de 255 caracteres
                                   .... e assim por diante

Cordialmente,

Carlos

Editado por Carlos Tre
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Basicamente é isso ai que o Carlos falou, a limitação não existe, mas nosso amiguinho compilador encherga :D

Quando você monta um string o compilador entende como uma grande constante, fazendo picado ele divide em várias menores.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

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