USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Tratamento Arquivos Texto
José Roberto
RECIFE
PE - BRASIL
ENUNCIADA !
Postada em 21/03/2007 14:21 hs            

Oi pessoal !!!

Ainda estou usando o Visual Basic 5 e estou tendo o seguinte problema com a leitura de arquivos texto.

O meu programa fica aguardando um outro programa externo gerar um arquivo texto que eu vou ter que ler em seguida. Estou usando um loop para ficar aguardando o arquivo aparecer. Quando o arquivo aparece, meu programa vai abrir e ler o seu conteúdo.

        gint_hora = Now
        Do While Dir("C:MeuArq.Txt") = ""
            'Verifica se passou mais de 2 minutos esperando
            If DateDiff("m", gint_hora, Now) > 2 Then
                Beep
                Exit Sub
            End If
        Loop
        Open "C:MeuArq.Txt" For Input As #100
        (continuação ...)

O problema é que o programa externo demora um pouco para gerar este arquivo, mas assim que ele começa, o Visual Basic já devolve um valor na função DIR e o meu programa sai do LOOP e tenta abrir o arquivo, antes da geração dele ser concluída. Isto está causando erros de "Permissão Negada" ou "Arquivo Não Encontrado".

Gostaria de saber se há outra função ou comando que verifique se o arquivo está disponível para abertura ou algo semelhante.

Espero ter explicado bem. Qualquer dúvida por favor postem.

Grato,

José Roberto

   
FHERMANN
SÂO CAETANO DO SUL
SP - BRASIL
ENUNCIADA !
Postada em 21/03/2007 16:36 hs            
Boa Tarde José.
 
acho que a utilização da API Sleep pode resolver teu problema, ela faz com que o programa para por um tempo, pode ser o tempo necessário para que o arquivo seja gerado corretamente.
 
declare no inicio do form
Private Declare Sub Sleep Lib "kernel32" (ByVal dwmilliseconds As Long)
 
e no teu código
        gint_hora = Now
        Do While Dir("C:MeuArq.Txt") = ""
            'Verifica se passou mais de 2 minutos esperando
            If DateDiff("m", gint_hora, Now) > 2 Then
                Beep
                Exit Sub
            End If
        Loop
        Sleep 100 ou +
        Open "C:MeuArq.Txt" For Input As #100
 
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 21/03/2007 16:49 hs            
Tente, se quiser:
 
On Error GoTo AbreArquivo
 TentedeNovo:
    Open "C:MeuArq.Txt" For Input As #100
    ' continuação
 
AbreArquivo:
 Dim sMEN As String
 sMEN = MsgBox("Problemas na Abertura do Arquivo. Tentar Novamente?", vbRetryCancel + vbCritical, "Erro")
If sMEN = vbRetry Then
   Resume TentedeNovo
Else
   End
End If
 
Bom no VB6, é beleza.
 
vlu//

 
   
José Roberto
RECIFE
PE - BRASIL
ENUNCIADA !
Postada em 21/03/2007 17:18 hs            

Oi pessoal,

Consegui resolver usando a API  que tem em

http://vbnet.mvps.org/index.html?code/fileapi/createfile_inuse.htm

Funcionou melhor no meu caso.

Eu já tinha colocado o Sleep() na função, mas ia fazer com que computadores lentos demorassem muito mais para passar pelo comando. E não há um tempo certo de duração para criar o arquivo.

Muito obrigado pela ajuda.

   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página