ALTERNATIVA A FUNÇÃO FILE()

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

Moderador: Moderadores

Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

:(
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:

Código: Selecionar todos

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 do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por Poka »

Olá

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

Poka
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por fladimir »

E se vc usar uma lógica diferente?
Tipo manda esperar o arquivo entende...

Código: Selecionar todos

	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 do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por fladimir »

E se vc usar uma lógica diferente?
Tipo manda esperar o arquivo entende...

Código: Selecionar todos

	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 do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por janio »

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 do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

:'(
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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por alxsts »

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)
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

:% :% :%
Caracas o que fazer!
HASA
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por fladimir »

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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por Jairo Maia »

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 do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

:(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 do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por ANDRIL »

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 do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

:(
Andril, EXATAMENTE isso.
:'(
HASA
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por Itamar M. Lins Jr. »

Ola!
Tente com as novas funções do Harbour. c:\>hbmk2 -find hb_vf*

Código: Selecionar todos

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?k ... fOpen()%22

PS.. Aprendendo o uso delas também.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

ALTERNATIVA A FUNÇÃO FILE()

Mensagem por HASA »

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