PROBLEMA NO TXT

SMZTODOPODEROSO 02/05/2012 19:42:22
#401215
Estou usando uma aplicação com o seguinte código

Dim caminho As String
Dim tempo As String
tempo = Format(Time, [Ô]HHMMSS[Ô])
caminho = [Ô]tempo.txt[Ô]
If Dir$(caminho) <> [Ô][Ô] Then
Open caminho For Output As #1
Print #1, tempo
Close #1
Else
Call MsgBox([Ô]Erro 361, Falta do ficheiro [ô]c:    empo.txt[ô][Ô], vbInformation, nomeprograma)
End
End If

Ou seja isto grava a hora num txt e numa outra aplicação tenho este código

If AppIsRunning([Ô]faria.exe[Ô]) = True Then
If valor1 = valor2 Then
KillApp [Ô]faria.exe[Ô]
End If
Else
caminho = [Ô]caminho.txt[Ô]
If Dir$(caminho) <> [Ô][Ô] Then
Open caminho For Input As #1
Input #1, caminho2
Close #1
ShellExecute hWnd, [Ô]open[Ô], caminho2, vbNullString, vbNullString, conSwNormal
Else
Call MsgBox([Ô]Erro 361, Falta do ficheiro [ô]caminho.txt[ô][Ô], vbInformation, nomeprograma)
End If
End If


O meu problema é que dá erro as vezes ao ler no txt, ou seja o segundo código. Diz que o ficheiro se encontra aberto!!!

O primeiro em 1 em 1 segundo grava a hora num txt e no segundo em 1 em 1 segundo le a hora para verificar se aplicação esta a rolar, caso ela não esteja ele termina essa mesma aplicação e torna-a abri-la
FILMAN 02/05/2012 23:23:52
#401226
Declare um variavel F e atribua a ela o valor do FreeFile

Dim F

F = FreeFile

Open Caminho For Input As #F
Line Input #F, Caminho2
Close #F


Lembrando Tambem que o primeiro código não há a necessidade de verificar se o arquivo existe a não ser que você queira!
Pois o mesmo se for existente ao utilizar o open ele apaga tudo e reescreve caso não exista o mesmo é criado

Código 1
Dim Caminho As String, Tempo As String
Dim OpenARQ

OpenARQ = FreeFile
Caminho = App.Path & [Ô]\Tempo.txt[Ô]
Tempo = Format(Now, [Ô]HHMMSS[Ô])

Open Caminho For Output As #OpenARQ
Print #OpenARQ, Tempo
Close #OpenARQ


Verifica Tambem se você esta abrindo algum arquivo anteriormente ou posteriormente ao segundo código com o #1 pode ser que esta abrindo e não foi fechado

Qualquer duvida posta ai
MARCELO.TREZE 03/05/2012 00:08:12
#401228
Resposta escolhida
o problema é o seguinte se as duas aplicações estão rondando no mesmo PC ao mesmo tempo, este erro ocorrerá, pois em algum tempo uma das aplicações estará gravando no TXT e a outra tentará ler este TXT ao mesmo tempo.

Opção

Trate o erro para contornar o problema

Em ambas aplicações coloque On Error Goto assim

InicioVerificacao:
On Error Goto ArquivoEmUso
If AppIsRunning([Ô]faria.exe[Ô]) = True Then
If valor1 = valor2 Then
KillApp [Ô]faria.exe[Ô]
End If
Else
caminho = [Ô]caminho.txt[Ô]
If Dir$(caminho) <> [Ô][Ô] Then
Open caminho For Input As #1
Input #1, caminho2
Close #1
ShellExecute hWnd, [Ô]open[Ô], caminho2, vbNullString, vbNullString, conSwNormal
Else
Call MsgBox([Ô]Erro 361, Falta do ficheiro [ô]caminho.txt[ô][Ô], vbInformation, nomeprograma)
End If
End If
ArquivoEmUso:
If Err.Number = (coloque o numero do erro) Then
Goto InicioVeirficacao
End If


veja minha teoria toda vez que ocorrer este erro a função é executada de novo, criando um loop que forcara a leitura do arquivo.
Tópico encerrado , respostas não são mais permitidas