ARQUIVO TEXTO

CJMCARDOSO 19/10/2009 08:47:03
#325651
Ola pessoal estou com uma duvida tenho um sistema de automação onde tenho que ler um arquivo texto excultar algumas tarefas do arquivo texto e quando terminar a tarefa tem que devolver o resultado da tarefa bom esse sistema esta ok mas quando eu termino a tarefa eu tenho que copiar esse arquivo texto e apagar ele mas o windows fala que o arquivo está em uso pelo sistema, então tenho que fechar o sistema para fazer isso como faço poder fazer isso sem fechar o sistema
TECLA 19/10/2009 09:09:57
#325654
Poste a rotina completa de processamento do arquivo de texto.
ALEMAO 19/10/2009 09:38:17
#325659
Resposta escolhida
Bom dia Amigo!

Como tu esta abrindo esse arquivo?
Se for assim [Ô]Open [Ô]C:\Arquivo.Txt[Ô] For Append As #1[Ô], tu vai ter que fechar esse arquivo pra poder apagar ele...
é só colocar:
Close #1

Como disse o Tecla, coloca a rotina ai que fica mais facil gente te ajudar...
CJMCARDOSO 19/10/2009 09:42:34
#325660
Estou abrindo o arquivo texto assim


[th][/th]
arquivo texto
CAMINHO = App.Path & [Ô]\Reporte_Ordem.txt[Ô]
[ô]MsgBox Len(caminho)

ind = 185
Close #F
If Dir(CAMINHO) = [Ô][Ô] Then LerArquivo = False
Open CAMINHO For Input As F [ô]abre o arquivo texto
Line Input #F, LINHA
Tamanho = Len(LINHA)
Tamanho = Tamanho + 2
res = Len(LINHA) / ind
If Tamanho < 185 Then Exit Function
ReDim nomeOrdem(res)
ReDim sData(res)
ReDim zeroEsq(res)
ReDim QtdMassa(res)
ReDim Espaco1(res)
ReDim qtdRepete(res)
ReDim Espaco2(res)
ReDim noTambor(res)
ReDim Espaco3(res)
ReDim nomeReceita(res)
ReDim Espaco4(res)
ReDim nomArquivo(res)
ReDim Espaco5(res)
ReDim Espaco6(res)
CancelaReporterOrdem
res = (Len(LINHA) + 2)
res = Tamanho / ind
I = 1
N = 1
T = 0
AR = 1
res = Len(LINHA) / ind
I = 1
N = 1
T = 1
AR = 1
Do While Not EOF(F)
Line Input #F, LINHA
nomeOrdem(T) = Mid(LINHA, N, 41)
N = N + 41
sData(T) = Format(Now, [Ô]DDMMYYYY[Ô])
N = N + 8
Espaco1(T) = Format(Mid(LINHA, N, 3), [Ô]000[Ô])
N = N + 3
QtdMassa(T) = Mid(LINHA, N, 5)
N = N + 5
Espaco2(T) = Mid(LINHA, N, 42)
N = N + 42
qtdRepete(T) = Mid(LINHA, N, 1)
If qtdRepete(T) <> 1 Then Exit Function
N = N + 1
Espaco3(T) = Mid(LINHA, N, 19)
N = N + 19
noTambor(T) = Mid(LINHA, N, 2)
N = N + 2
Espaco4(T) = Mid(LINHA, N, 14)
N = N + 14
nomeReceita(T) = Mid(LINHA, N, 6)
N = N + 6
Espaco5(T) = Mid(LINHA, N, 42)
N = 1
T = T + 1
Loop
ind = 185
[ô]Line Input #F, LINHA
Tamanho = Len(LINHA)
Tamanho = Tamanho + 2
res = Len(LINHA) / ind
I = 1
N = 1
T = 0
AR = 1
Close #F
CLAYTON 19/10/2009 10:41:48
#325669
Verifique se sua Variavel #F não está sendo alterada em algum outro Lugar..eu

Então para Testar
Mude o #F para #1 pra testar (pois assim fica valor FIXO).
Em todo o codigo..

CJMCARDOSO 19/10/2009 10:44:55
#325670
ok essa rotina eu esquisa de diser abro outro arquivo chamado arquivo_receita.txt do mesmo modo.
CLAYTON 19/10/2009 12:15:06
#325673
Então é isso o #F ta ficando Preso a outra rotina, faça o teste como disse
RO.DRIGOSG 20/10/2009 11:56:35
#325781
Segue exemplo:

    Dim intFreeFile        As Integer
Dim strCaminho As String
Dim strAux As String

strCaminho = [Ô]C:\Teste.txt[Ô]

intFreeFile = FreeFile
Open strCaminho For Input As #intFreeFile
Do While Not EOF(intFreeFile)
Line Input #intFreeFile, strAux
[ô].
[ô].
[ô].
[ô].
Loop
Close #intFreeFile

[ô]*** DELETA O ARQUIVO
If strCaminho <> [Ô][Ô] Then
If Dir$(strCaminho, vbNormal) <> [Ô][Ô] Then
Kill strCaminho
End If
End If

CJMCARDOSO 20/10/2009 13:42:34
#325797
Ola pessoal deslculpe a demora consegui resolver apenas troquei o nome dos arquivo em vez de chamar os dois arquivo de F eu chamo o primeiro de F e 2 de 1 de deu certo
Tópico encerrado , respostas não são mais permitidas