borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2007 Andrea Tincaniborder

AndreaVB | Forum | News | Downloads | Register | Help | Member List | Statistics | Search | PM | Profile

Print This Topic
Previous Topic (API - Identificar no Windows, em Configurações Regionais, se a configuração é de ponto ou vírgula) New Topic New Poll Post Reply
AndreaVB Forum : Non-English ONLY : Arquivo Sequencial - Como faço para ler um arquivo sequencial com mais de 32.767 bytes
Poster Message
robap
Level: Guest


icon Arquivo Sequencial - Como faço para ler um arquivo sequencial com mais de 32.767 bytes  Archived to Disk

Oi Pessoal!

   Preciso ler arquivos textos, no modo sequencial, com mais de 32.767 bytes. Arquivos com uma quantidade de byte inferior não ocasionam erro. O quê devo fazer? Se alguem souber por favor responda!!!!!!!
   Obrigado.
     Roberta.            

26-04-2002 at 07:40 PM
| Quote Reply
acrbasic
Level: Guest

icon Re: Arquivo Sequencial - Como faço para ler um arquivo sequencial com mais de 32.767 bytes  Archived to Disk

Uma solução é ler 32K bytes do arquivo de cada vez e fazer o processamento desejado, até o fim do arquivo:

Function ProcessaArquivo (ByVal Nome$) As Long

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Esta função lê um arquivo de qualquer tamanho no modo binário e faz um processamento
' desejado.
' Caso o arquivo tenha mais de 32768 bytes, serão lidos 32768 bytes de cada vez.
' Em sistemas de 16 bits o poderia haver uma limitação dessa ordem.
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


     Dim Arq%, Tamanho&, ErroAnterior%, i%, Inteiro&, Parte&, Início&, x&, Temp$

'    Abre o arquivo
     Arq = FreeFile
     Open Nome For Binary As #Arq

'    A variável temporária 'temp$' armazenará o arquivo ou parte dele
     Tamanho = LOF(Arq)
     If Tamanho > 32768 Then Tamanho = 32768

'    Tentamos fazer a variável temporária do maior tamanho possível
       ErroAnterior = -1
       Do While ErroAnterior <> 0
          On Error Resume Next
              Temp$ = Space$(Tamanho)
              ErroAnterior = Err
              On Error GoTo 0
          Tamanho = Tamanho / 2
       Loop
       Tamanho = Len(Temp$)

'      Determina quantas leituras inteiras serão feitas
       Inteiro& = LOF(Arq)  Tamanho

'      Determina o tamanho da última leitura a ser feita (bytes no fim do arquivo)
       Parte& = LOF(Arq) Mod Tamanho
      
'      Laço de leitura do arquivo
       Início& = 1
       If Parte > 0 Then Inteiro = Inteiro + 1
       For x& = 1 To Inteiro&
           If x = Inteiro And Parte > 0 Then
              Temp$ = Left$(Temp$, Parte)
           End If
           Get #Arq, Início&, Temp$
           'Faça aqui o processamento desejado ...
           '
           '...
           '
           '......................................
           Início& = Início& + Tamanho
           DoEvents
       Next

     Close #Arq

End Function

14-05-2002 at 04:59 PM
| Quote Reply
AndreaVB Forum : Non-English ONLY : Arquivo Sequencial - Como faço para ler um arquivo sequencial com mais de 32.767 bytes
Previous Topic (API - Identificar no Windows, em Configurações Regionais, se a configuração é de ponto ou vírgula) New Topic New Poll Post Reply
Surf To:


Not Logged In? Username: Password: Lost your password?
Partners: Download Actual Software | Free Software Download
borderAndreaVB free resources for Visual Basic developersborder

borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2007 Andrea Tincaniborder