Página 1 de 1

duvida com o comando FILE

Enviado: 26 Mai 2016 13:08
por porter
ola pessoal, gostaria de saber porque após renomear um arquivo, preciso executar o comando inkey(0.1) para que o comando FILE,
encontre o arquivo renomeado, estou fazendo dessa forma, não sei se está correto, mas funciona.

Código: Selecionar todos

FRENAME( "C:\LOJA" + '\ENTNFe' + '.CMD', Alltrim("C:\LOJA") + '\ENTNFe' + '.TXT' )

[b]inkey(0.1) <-- tem que usar esse comando senao nao o FILE nao funciona[/b]

if file( Alltrim("C:\LOJA") + '\SAINFE' +  '.TXT' )
xHarbour, windows 7.

obrigado

duvida com o comando FILE

Enviado: 26 Mai 2016 16:08
por alxsts
Olá!

Parece estranho... você renomeia C:\LOJA'\ENTNFe.CMD para C:\LOJA'\ENTNFe.TXT e depois procura por C:\LOJA\SAINFE.TXT. É isto mesmo ou entendi errado? Estas chamadas para Alltrim() são desnecessárias.

No Harbour existe a função HB_FILEEXISTS. Não sei se existe no xHarbour.

duvida com o comando FILE

Enviado: 26 Mai 2016 16:34
por porter
ola alxsts, é isso mesmo, estranho, não entendi também.

duvida com o comando FILE

Enviado: 26 Mai 2016 16:45
por alxsts
Olá!

Se você não entendeu, imagine os outros...

Acho que o teu código deveria estar assim se quiser localizar o arquivo recém renomeado:

Código: Selecionar todos

if file( "C:\LOJA" + '\ENTNFe' +  '.TXT' )

duvida com o comando FILE

Enviado: 26 Mai 2016 18:38
por Jairo Maia
Olá Pessoal,
porter escreveu:ola pessoal, gostaria de saber porque após renomear um arquivo, preciso executar o comando inkey(0.1) para que o comando FILE, encontre o arquivo renomeado
Não Precisa. Na verdade você está renomeando o arquivo C:\LOJA'\ENTNFe.CMD para C:\LOJA'\ENTNFe.TXT, depois procura pela resposta do ACBr no arquivo SAINFE.TXT.

Na verdade provavelmente ainda são testes primários, porisso 0.1 segundos é tempo para que o ACBr devolva a resposta no arquivo SAINFE.TXT que você procura pelo FILE().

Uma dica:
Para que você possa aguardar o arquivo de resposta do ACBr, aconselho a usar um Timer. Algo mais ou menos assim:

Código: Selecionar todos

nTemtativas := 0
While !File( "SAINFE.TXT" ) .And. nTentativas < 20  // aguarda no máximo 10 segundos
  nTentativas++
 Inkey ( 0.5 )
EndDo

If !File( "SAINFE.TXT" )
 Alert( "Componente ACBrMonitor não respondendo!";Contate o Suporte!" )
EndIf
NOTA: Lembre-se de colocar sempre antes de qualquer comando a enviar para o ACBr o seguinte:

Código: Selecionar todos

FileDelete( "SAINFE.TXT" )
Isso garante que a resposta lida será sempre a resposta ao último comando.

duvida com o comando FILE

Enviado: 27 Mai 2016 08:18
por rubens
Bom dia

Jairo,

Essa função Filedelete() é do harbour?

É mais eficiente do que o comando Ferase()

Obrigado
Rubens

duvida com o comando FILE

Enviado: 27 Mai 2016 08:52
por porter
entendi, tem que aguardar uma resposta do AcbrMonitor, por isso que não localizava o arquivo.

obrigado.

duvida com o comando FILE

Enviado: 27 Mai 2016 08:55
por viniciuspc
Rubens,

As duas funções excluem o arquivo, igual ao comando "DELETE FILE". A diferença esta no código de retorno !


FileDelete pode retornar

Código: Selecionar todos

         ------------------------------------------------------------------------
          Code    Symb. constants     Definition
          ------------------------------------------------------------------------
           0      NO_DISK_ERR         No error occurs
          -2      ER_FILE_NOT_FOUND   File not found
          -3      ER_PATH_NOT_FOUND   Path not found
          -5      ER_ACCESS_DENIED    Access denied (e.g., file is read-only)
          ---------------------------------------------------------------------


E fErease retorna

Código: Selecionar todos

0 Sucesso
-1 Erro
Fontes:
https://vivaclipper.wordpress.com/tag/filedelete/
https://vivaclipper.wordpress.com/2014/01/09/ferase/

:xau

duvida com o comando FILE

Enviado: 27 Mai 2016 13:42
por alxsts
Olá!

Parabéns Jairo!

Realmente esta pergunta foi dirigida a dois tipos de programador: aqueles que conhecem AcbrMonitor e aqueles que tem o dom da adivinhação. Eu. como não tenho estes conhecimentos, respondi à luz do Harbour, pois o tópico foi colocado nesta seção do Fórum e não informa que se trata de AcbrMonitor.

duvida com o comando FILE

Enviado: 27 Mai 2016 16:38
por fladimir
Alexandre a confusão toda é q o colega porter esta baseando em um exemplo q postei q faço alltrim(Caminhos->PathNFe) e talvez tenha gerado a confusão...

No caso ele havia perguntado o q tinha nessa tabela e campo e eu disse q o caminho da pasta q é monitorada pelo acbr...

No meu sistema como o campo é extenso pois pode conter desde endereços de pastas curtos exemplo:

Código: Selecionar todos

C:\ACBr\   
mas tb pode ser mais extenso... exemplo...

Código: Selecionar todos

c:\pastasistema\ACBr\monitoramento\NFe ... 
então eu faço um alltrim antes de concatenar com o nome do arquivo monitorado pelo ACBr.

[]´s

duvida com o comando FILE

Enviado: 27 Mai 2016 16:50
por alxsts
Olá!

Fladimir: não vi este outro tópico mas, no teu caso se justifica o uso do AllTrim().

Na verdade, a confusão foi causada pelo fato de se renomear o arquivo A para B e depois procurar pelo arquivo C. Não foi informado que o arquivo B seria capturado e processado pelo AcbrMonitor e que o arquivo C seria devolvido na pasta pelo AcbrMonitor.