Fórum leitura de arquivo txt #174085
09/08/2003
0
Caros amigos , tenho um aplicativo em delphi destinado a ler um arquivo
txt na raiz da unidade c: , e funciona perfeitamente , mas tambem tenho
um aplicativo em clipper que lê o arquivo algumas vezes e apos 1 hora
mais o menos para de ler .
Sei que este forum nao e voltado a clipper mais quem quiser ajudar
:oops: ficaria muito grato.
obs . Será que tem haver com o numero de vezes que o arquivo e aberto e fechado
exemplo em clipper
do while (.t.)
arq := fopen(nome do arquivo)
fseek(arq,0)
fread(arq,@campo,2)
efetua o tratamento do que foi lido no campo
fclose(arq)
enddo
txt na raiz da unidade c: , e funciona perfeitamente , mas tambem tenho
um aplicativo em clipper que lê o arquivo algumas vezes e apos 1 hora
mais o menos para de ler .
Sei que este forum nao e voltado a clipper mais quem quiser ajudar
:oops: ficaria muito grato.
obs . Será que tem haver com o numero de vezes que o arquivo e aberto e fechado
exemplo em clipper
do while (.t.)
arq := fopen(nome do arquivo)
fseek(arq,0)
fread(arq,@campo,2)
efetua o tratamento do que foi lido no campo
fclose(arq)
enddo
Fabivechi
Curtir tópico
+ 0
Responder
Posts
09/08/2003
Aroldo Zanela
Colega,
Há muitos anos que não utilizo clipper (...1997), mas verifiquei em uma antiga aplicação que eu desenvolvi e não vejo nenhuma diferença significativa do fragmento que você postou.
Apresenta alguma mensagem de erro?
A propósito, lembre-se que pode ser algum problema de violação de compartilhamento do arquivo. Veja:
Exemplo:
Há muitos anos que não utilizo clipper (...1997), mas verifiquei em uma antiga aplicação que eu desenvolvi e não vejo nenhuma diferença significativa do fragmento que você postou.
STATIC FUNCTION Custos()
// Linha 438 deve ser modificada qdo mudar a geracao para tamanho 380 (c/CR e LF)
LOCAL nHandle := 0
LOCAL nBloco := 378 // Registro + CR e LF
LOCAL nTamanho := 0
LOCAL cBuffer := Space( nBloco )
Begin Sequence
Fonte() // Exibe nome do fonte
If !Abre( { "ROLLBACK" ,;
"SCL00009" ,;
"SCL00010" ,;
"SCL00011" }, .T., .T. )
Break
EndIf
If ROLLBACK -> ( dbSeek( "SCL00009" ) )
ROLLBACK -> REGISTROS := SCL00009 -> ( LastRec() )
ROLLBACK -> FLAG := .T.
EndIf
If ROLLBACK -> ( dbSeek( "SCL00010" ) )
ROLLBACK -> REGISTROS := SCL00010 -> ( LastRec() )
ROLLBACK -> FLAG := .T.
EndIf
If ROLLBACK -> ( dbSeek( "SCL00011" ) )
ROLLBACK -> REGISTROS := SCL00011 -> ( LastRec() )
ROLLBACK -> FLAG := .T.
EndIf
ROLLBACK -> ( dbCloseArea() )
Rodape( "Aguarde! Importa‡Æo de arquivo de custos..." )
If ( nHandle := FOpen( "IMPORTA\CUSTOS.TXT" ) ) >= 0
nTamanho := FSeek( nHandle, 0, 2 )
FSeek( nHandle, 0 )
While nTamanho >= nBloco
If FRead( nHandle, @cBuffer, nBloco ) == nBloco
Do Case
Case Left( cBuffer, 1 ) == "1"
SG3409( cBuffer )
Case Left( cBuffer, 1 ) == "2"
SG3410( cBuffer )
Case Left( cBuffer, 1 ) == "3"
SG3411( cBuffer )
EndCase
EndIf
nTamanho -= nBloco
End
FClose( nHandle )
EndIf
End Sequence
dbCloseAll()
return NIL
Apresenta alguma mensagem de erro?
A propósito, lembre-se que pode ser algum problema de violação de compartilhamento do arquivo. Veja:
FOPEN() Sharing Modes ------------------------------------------------------------------------ Mode Fileio.ch Operation ------------------------------------------------------------------------ 0 FO_COMPAT Compatibility mode (default) 16 FO_EXCLUSIVE Exclusive use 32 FO_DENYWRITE Prevent others from writing 48 FO_DENYREAD Prevent others from reading 64 FO_DENYNONE Allow others to read or write 64 FO_SHARED Same as FO_DENYNONE ------------------------------------------------------------------------
Exemplo:
#include "Fileio.ch"
//
nHandle := FOPEN("Temp.txt", FO_READWRITE + FO_SHARED)
IF FERROR() != 0
? "Cannot open file, DOS error ", FERROR()
BREAK
ENDIF
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)