Arquivo TXT fica aberto

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

evertonlb
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Fev 2010 16:48
Localização: Chapecó - SC

Arquivo TXT fica aberto

Mensagem por evertonlb »

Amigos... resolvi alguns problemas com relaçao ao nome longo em arquivo TXT,em relacao ao "quadradinho" que aparecia no inicio... mas agora tenho outro problema...
Eu gravo na pasta do meu sistema um arquivo com o nome de DAT.TXT depois disso eu uso a funcao LF_Raname()
para copia-lo para outra pasta e para renomea-lo com um nome longo ( DAT0190910920.txt ),o que esta acontecendo é que quando eu plugo meu notebook na rede da loja o processo acontece direitinho, mas quando eu uso as maquinas do meu cliente este processo nao acontece... o software atécria o DAT.TXT porem ele fica aberto... qdo tento abri-lo com o WordPar ou NotePad da uma mensagem que o arquivo esta sendo usado por outro aplicativo e por isso acho que nao esta copiando para outra pasta e nem renomeando...
Notem.. do meu notebook para o servidor acontece tudo normal, renomeia e copia para a outra pasta sem problemas, mas das estacoes que estao na loja nao, da a mensagem de arquivo usado por outro aplicativo...


Alguma idéia??? ja estou aqui um dia todo e nada!!!
espero resolver amanha pela manha...
ainda tenho mais 4 clientes pra atender antes de sábado...

Obrigado a todos
Everton
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Arquivo TXT fica aberto

Mensagem por alaminojunior »

Boa noite,
desculpe a pergunta cretina....mas já tentou o óbvio ? Force um Fclose(), quem sabe ...
Outra coisa sería verificar o cache de disco das máquinas. Pode ser que ele esteja habilitado e esteja causando este "atraso".
E também não está descartada a hipótese do setor onde foi gravado o arquivo estar corrompido.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Arquivo TXT fica aberto

Mensagem por gvc »

Se vc esta usando:
Set Alternate to <arquivo.txt>
Set Alternate on

Deve colocar no final:
Set Alternate off
Set Alternate to

Se esta usando:
set printer to <arquivo.txt>

Deve colocar:
set printer to

Se esta usando:
fopen

Deve colocar:
fclose

Faça um teste. Crie o arquivo aonde esta dando problema e feche a aplicação. Tente renomear o arquivo texto gerado.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
evertonlb
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Fev 2010 16:48
Localização: Chapecó - SC

Re: Arquivo TXT fica aberto

Mensagem por evertonlb »

Obrigado pelas dicas, dei uma olhada no NG da FLNlib e encontrei alguma coisa sobre um erro 7143, dizendo que alguns sistemas operacionais nao permitem que a funcao para nomes longos funcione perfeitamente... meu ingles não é lá essas coisas,mas deu pra entender que esse problema existe... se alguem souber como soluciona-lo gostaria muito de saber a soluçao pra tal problema. hehehe. Seque meu código

Código: Selecionar todos

Set device to printer
set printer to DAV.PED
*
setprc(0,0)
*
nLinha := 0
*
@ 00,00  say "0"
@ 00,01  say DAVClie
@ 00,06  say DAVProm
@ 00,08  say DAVInte
@ 00,18  say "DAV"+DAVInte
@ 00,66  say DAVEntr
@ 00,75  say ValDesc
@ 00,84  say ValAcre
@ 00,93  say strzero( day( date() ), 2, 0 ) 
@ 00,95  say strzero( month( date() ), 2, 0 )
@ 00,97  say strzero( Year( date() ), 4, 0 ) 
@ 00,101 say "ORCAMENTO"
@ 00,199 say "X"
*
__nTamVet := Len( _aVetDetCom )
*
for __nI := 1 to __nTamVet
	*
   nLinha ++
   *
   DAVqtde1  := left( strzero( _aVetDetCom[ __nI, 3 ], 8, 3 ), 4 ) + right( strzero( _aVetDetCom[ __nI, 3 ], 8, 3 ), 3 )
	*                                                                                                                                                       
   DAValUni  :=left( strzero( (_aVetDetCom[ __nI, 6 ]/_aVetDetCom[ __nI, 3 ]), 9, 3 ), 5 ) + right( strzero( (_aVetDetCom[ __nI, 6 ]/_aVetDetCom[ __nI, 3 ]), 8, 3 ), 3 )
	*
	@ nLinha,0  say "1"
	@ nLinha,1  say _aVetDetCom[ __nI, 2 ]
	@ nLInha,8  say DAVQtde1
	@ nLinha,15 say "0001000"
	@ nLinha,22 say DAValUni
	@ nLinha,69 say "X"  
	*
next
nLinha ++
@ nLinha,00 say "9"
*
ArqOriginal := "DAV.PED"
*
LF_FRename( ArqOriginal, ( _cPathServ + "\P"+ DAVInte +".PED" ) )
fclose(ArqOriginal)
delete file( ArqOriginal )
*
set device to screen
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Arquivo TXT fica aberto

Mensagem por alaminojunior »

Perfeito , você está tentando renomear o arquivo que praticamente ainda não existe. Não foi fechado.
...
next
nLinha ++
@ nLinha,00 say "9"
*
*
SET PRINTER TO
SET DEVICE TO SCREEN

ArqOriginal := "DAV.PED"
LF_FRename( ArqOriginal, ( _cPathServ + "\P"+ DAVInte +".PED" ) )
fclose(ArqOriginal) // ESTE AQUI TALVEZ NÃO PRECISE, HAJA VISTA NÃO FOI ABERTO POR FOPEN()
delete file( ArqOriginal )
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
evertonlb
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Fev 2010 16:48
Localização: Chapecó - SC

Re: Arquivo TXT fica aberto

Mensagem por evertonlb »

resolvi tirar fora ( mesmo porque nao preciso mais ) a lib de nome extenso
agora to usando a FRename() porem nao consigo gravar o arquivo novo no path novo...
to tentando fazer assim fRename( ArqVelho, "c:\teste\"+ ArqNovo ) nao deu... qual a sintaxe correta???

Obrigado!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Arquivo TXT fica aberto

Mensagem por alaminojunior »

A sintaxe sería:

Código: Selecionar todos

FRename("c:\arquivos\arquivo.txt","c:\arquivos\arquivo1.txt")
Lembrando que o arquivo precisa estar fechado.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder