Ir para conteúdo
  • Cadastre-se

dev botao

Comando - NFe.LerNFe(cArqXML)


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

Recommended Posts

Bom dia pessoal, estou com um probleminha ao usar o comando a seguir:

NFe.LerNFe(cArqXML) - Irá ler o arquivo XML da NFe e retornar no formato INI usado no ACBrNFeMonitor

Utilizo esse comando para ler um XML e gerar o arquivo sainfe.txt e através desse txt eu gero a nota de compra, até ai tudo certo.. funciona perfeitamente.

O problema é que sempre que faço isso o arquivo sainfe.txt fica travado de forma que não consigo editar, apagar, deletar, etc...

e ele fica assim até que eu feche o sistema e abra novamente.

Segue a baixo parte do código:

AssignFile(ENT, 'C:\ACBrNFeMonitor\ENTNFE.TXT');

Rewrite(ENT);

write(ENT,'NFE.LerNFe(');

write(ENT,caminhoxml);

write(ENT,')');

CloseFile(ENT);

if fileExists('c:\ACBrNFeMonitor\sainfe.TXT') then

begin

AssignFile(SAI, 'c:\ACBrNFeMonitor\sainfe.TXT');

Reset(SAI);

WHILE NOT EOF(SAI)DO

Begin

.

.

.

end;

CloseFile(SAI);

DeleteFile('C:\ACBrNFeMonitor\sainfe.TXT');

end;

O sistema passa por todos os comandos, faz tudo aparentemente correto mas o arquivo da a mensagem de que não pode ser excluído pois esta sendo usado. Nem se eu for dentro da pasta onde esta o arquivo e tentar deletar não consigo... só depois de fechar a aplicação que o arquivo é liberado.

Alguem sabe o que estou fazendo de errado?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Talvez não influencie no arquivo de reposta, mas o ideal é vc criar o arquivo ENTNFE.TXT com outro nome(ex: ENTNFE.TMP) é só após gravar todos os dados no arquivo renomeá-lo para ENTNFE.TXT, para evitar q enquanto sua aplicação ainda está criando o arquivo o ACBrNFeMonitor tente excluí-lo.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Então anfm... eu até tenho tratamento para evitar isso... o problema não esta no arquivo ENTNFE e sim depois de todo processo terminado eu preciso deletar o arquivo sainfe.TXT ou pelo menos limpar seu conteudo para que o usuario possa importar o proximo XML mas algo esta travando o arquivo sainfe.TXT de forma que só consigo deleta-lo ou edita-lo depois de fechar a aplicação

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Tente colocar um sleep depois do if fileExists('c:\ACBrNFeMonitor\sainfe.TXT') then para evitar q ao mesmo tempo em q o monitor está gravando o arquivo vc tente abrí-lo.

Ou pode ser alguma coisa na sua aplicação que está prendendo o arquivo. Qdo der este erro, com seu programa ainda aberto tente excluir o arquivo SAINFE.TXT pelo Windows Explorer e veja se o erro tbm ocorre. Se ocorrer, finalize sua aplicação e tente novamente apagar o arquivo SAINFE.TXT pelo Windows Explorer. Se vc conseguir excluir era sua aplicação q estava segurando o arquivo, se ainda acontecer o erro pode ser algum problema no ACBrNFeMonitor.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

anfm obrigado pela resposta... então... eu sei que é algo na aplicação pois o arquivo fica travado para edição ou exclusão mesmo pelo windos explorer enquanto minha aplicação estiver aberta, só não consigo entender o que esta travando esse arquivo pois utilizo ele pra tudo na parte de criação, envio, consulta, etc... de nfe

A única diferença é que sempre trabalho com arquivos txt e pelo que li esse comando write(ENT,'NFE.LerNFe('); trabalha com arquivo .ini, não sei se isso tem algo a ver ou se eu realmente estou fazendo alguma "cabaçada" na leitura do arquivo sainfe que esta travando ele.

Caso vc queira dar uma olhada eu posso colocar a função toda aqui. hehehehe

Link para o comentário
Compartilhar em outros sites

Problema solucionado... Caso alguem enfrente o mesmo problema que eu segue a baixo a solução e minha "cabaçada":

Eu fazia o seguinte... abria o arquivo SAINFE.TXT e fazia o que precisava, na sequencia eu não fechava o arquivo apenas dava o comando:

AssignFile(SAI, 'c:\ACBrNFeMonitor\sainfe.TXT');

Reset(SAI);

E mandava fazer o que eu precisava novamente e depois sem fechar o arquivo novamente dava o comando:

AssignFile(SAI, 'c:\ACBrNFeMonitor\sainfe.TXT');

Reset(SAI);

E assim por diante e no final quando não iria mais utilizar o arquivo sainfe.txt eu dava o comando close e depois o comando delete.

Agora cada sequencia em que dou o comando AssignFile no final dou o CloseFile antes de dar outro AssignFile:

AssignFile(SAI, 'c:\ACBrNFeMonitor\sainfe.TXT');

Reset(SAI);

\\execute a função necessaria e antes de dar o comando assignfile novamente feche o arquivo txt

CloseFile(SAI);

Obrigado e desculpem pela cabaçada...

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4592 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...
The popup will be closed in 10 segundos...