PROBLEMA NO TXT
                    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
            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
                    Declare um variavel F e atribua a ela o valor do FreeFile
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
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
            Dim F
F = FreeFile
Open Caminho For Input As #F
    Line Input #F, Caminho2
Close #FLembrando 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 #OpenARQVerifica 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
                    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
veja minha teoria toda vez que ocorrer este erro a função é executada de novo, criando um loop que forcara a leitura do arquivo.
                
            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 Ifveja 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