Clipper On Line • Ver Tópico - ALTERNATIVA A FUNÇÃO FILE()

ALTERNATIVA A FUNÇÃO FILE()

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 16 Ago 2018 12:51

:(
Boa tarde, colegas estou enfrentando um problema que não consigo resolver. Preciso que a função file() identifique assim que um arquivo.txt for gerado, estou usando:
DO WHILE !FILE( cArq )
    inkey(.5)
ENDDO


Vejo que o arquivo é gerado mas o sistema lê após NNNNNN segundos, isso em rede ok, em modo local beleza responde rapidamente, teriam alguma outra função ou dica para melhorar o desempenho?
8-|
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor Poka » 16 Ago 2018 13:17

Olá

Também percebo este problema, inclusive para pegar retorno da SEFAZ.

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 513
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor fladimir » 16 Ago 2018 14:15

E se vc usar uma lógica diferente?
Tipo manda esperar o arquivo entende...
   local REQ, nHoraInicio := Seconds()
   REQ  := ::cDirDoMonitor + ::cArqTXT // ENT.TXT

   *-- Faca enquanto nao existir arquivo
   while .not. file(REQ)
      IF Seconds() - nHoraInicio > 300 // Tenta 60 s = 1min
         ::cRetorno := 'ERRO: Protocolo nao esta ativo'
         return nil
      ENDIF
      inkey(0.1)
   end
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor fladimir » 16 Ago 2018 14:15

E se vc usar uma lógica diferente?
Tipo manda esperar o arquivo entende...
   local REQ, nHoraInicio := Seconds()
   REQ  := ::cDirDoMonitor + ::cArqTXT // ENT.TXT

   *-- Faca enquanto nao existir arquivo
   while .not. file(REQ)
      IF Seconds() - nHoraInicio > 300 // Tenta 60 s = 1min
         ::cRetorno := 'ERRO: Protocolo nao esta ativo'
         return nil
      ENDIF
      inkey(0.1)
   end
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor janio » 16 Ago 2018 14:45

tbm tem a função hb_FileExists()
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 16 Ago 2018 17:27

:'(
Srs. muito obrigado pela dicas, mas incrivelmente é como se o sistema fica-se cego, o arquivo tá la mas... ele não lê, demora muito.
:(Neg
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor alxsts » 16 Ago 2018 17:45

Olá!

Isto tem a ver com o cache do Windows. Parece que já vi algo aqui mesmo no fórum sobre o problema. Parece que tem que desativar o cache através de alguma chave do registro do Windows (Regedit). Só não sei se isto é conveniente...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 16 Ago 2018 17:49

:% :% :%
Caracas o que fazer!
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor fladimir » 16 Ago 2018 22:07

Isso eu ia falar do CACHE e esqueci, desabilita o cache do HD reinicia e testa.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor Jairo Maia » 16 Ago 2018 22:34

Olá HASA,

Já tentou usar Hb_FileExists( cArq )?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 17 Ago 2018 09:22

:(Neg
Jairo, tentei sim, o problema é em rede local vai que é um avião a jato, em rede uma carroça com cavalo manco.
:-o
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor ANDRIL » 17 Ago 2018 10:43

Esse problema já relatei tempos atrás e percebi ele quando precisei emitir NFe em rede usando o AcbrMonitor. Não consegui solucioná-lo mesmo desativando o cache do Windows. Uma operação em que na máquina local dura 5 segundos quando em rede demora no mínimo 12 segundos.
O arquivo fica criado na máquina da rede de destino, só que a máquina solicitante não enxerga. Após um delay algo é atualizado e ela passa a enxergar.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 17 Ago 2018 10:54

:(
Andril, EXATAMENTE isso.
:'(
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor Itamar M. Lins Jr. » 17 Ago 2018 11:03

Ola!
Tente com as novas funções do Harbour. c:\>hbmk2 -find hb_vf*
Trecho extraído hbdoc.prg do Harbour 3.4 mas tem no 3.2
  IF HB_ISSTRING( cRoot )
      cDir := hb_DirSepAdd( cDir )
   ELSE
      /* Detect Harbour root */
      cRoot := "." + hb_ps()
      DO WHILE hb_vfDirExists( cRoot + ".." )
         IF hb_vfExists( cRoot + "README.md" ) .AND. ;
            hb_vfExists( cRoot + "LICENSE.txt" ) .AND. ;
            hb_vfExists( cRoot + "config" )
            EXIT
         ENDIF
         cRoot += ".." + hb_ps()
      ENDDO
   ENDIF


Então, hb_vfExists("seuarquivo.txt") e outras tantas que tornam obsoletas as funções file(), fopen() etc...
O Przmek, Viktor só usam essas novas, pois suportam também protocolo TCP tipo hb_fvopen(tcp:192.168...) e hb_vfopen(com1:...)
http://www.harbourdoc.com.br/show.asp?key=%22hb_vfOpen()%22

PS.. Aprendendo o uso delas também.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6944
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 311 vezes
Mens.Curtidas: 505 vezes

ALTERNATIVA A FUNÇÃO FILE()

Mensagempor HASA » 17 Ago 2018 11:28

:D :))
Itamar, houve uma melhora de pelo menos 50% na velocidade da resposta.
:{ :{ :{
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro