Newsgroup: it.comp.lang.visual-basic
Titolo: Leggere un file sequenziale

Dovrei leggere i dati scritti in maniera sequenziale su un file di testo in
questo modo:
cognome1 cap1 citta1 cognome2 cap2 citta2 cognome3 cap3 citta3 cognome4 cap4
citta4 cognome5 cap5 citta5 cognome6 cap6 citta6 cognome7 cap7 citta7
cognome8 cap8 citta8 cognome9 cap9 citta9 e cosi via ci sono oltre 4.000
record
e trasferire il valore nelle variabili:
cognome
cap
citta
Il campo cognome è di 25 caratteri
Il campo cap è di 5 caratteri
Il campo citta è di 25 caratteri
Il programma di seguito riportato funziona se su ogni riga del file di testo
c'e' il ritorno a capo e quindi non è valido per il file che io possiedo, in
quanto i dati sono registrati in maniera sequenziale.
Qualcuno può postare le modifiche da apportare al programma affichè legga
correttamente i dati ?
Oppure postare un nuovo programma adatto al mio caso.
Private Sub LeggiFileTxt()
Dim Fs, FileTxt
Dim Riga As String
Set Fs = CreateObject("Scripting.FileSystemObject")
Set FileTxt = Fs.OpenTextFile(App.Path & "\Indice.txt", 1, True, 0)
Do While FileTxt.AtEndOfStream = False
      Riga = FileTxt.readline
      cognome=mid(riga,1,25)
      cap=mid(riga,26,5)
      citta=mid(riga,31,25)
Loop
End Sub

E' un progettino di prova, ovviamente tu dovrai mettere i dati non in 
delle list ma in degli array, ovviamente il codice vale se il file
rispetta le posizioni 
ad esempio 
citta4                   cognome5                 cap5 citta5
cognome6                 cap6 citta6                   
cognome7                 cap7 
citta7                   cognome8                 cap8 citta8
cognome9                 cap9 citta9                   
altrimenti non va bene.
Poi modificalo secondo le tue esigenze!
Ciao!
------------------
Private Sub LeggiFile(ByVal NomeFile As String)
Dim TxStringa                   As String
Dim Cognome, Citta, Cap         As String
Dim elCognome, elCitta, elCap   As Boolean
    elCognome = False
    elCap = False
    elCitta = False
 
    List1.Clear
    List2.Clear
    List3.Clear
 
    Open NomeFile For Input As #1
    Do Until EOF(1)
        Line Input #1, TxStringa 'Legge una riga
 
        Do While TxStringa <> ""
 
            If elCognome = True And elCap = True And elCitta = True Then
                elCognome = False
                elCap = False
                elCitta = False
            End If
 
            If elCognome = False Then
                If TxStringa <> "" Then
                    Cognome = Trim(Mid(TxStringa, 1, 25))
                    elCognome = True
                    TxStringa = Mid(TxStringa, 26)
                    List1.AddItem Cognome
                End If
            End If
            If elCap = False Then
                If TxStringa <> "" Then
                    Cap = Trim(Mid(TxStringa, 1, 5))
                    elCap = True
                    TxStringa = Mid(TxStringa, 6)
                    List2.AddItem Cap
                End If
            End If
            If elCitta = False Then
                If TxStringa <> "" Then
                    Citta = Trim(Mid(TxStringa, 1, 25))
                    elCitta = True
                    TxStringa = Mid(TxStringa, 26)
                    List3.AddItem Citta
                End If
            End If
 
        Loop
    Loop
 
    Close #1
 
End Sub
"antonio" <ant...@NOSPAMplease.com> wrote in message
news:c8ce4e$u2t$
1...@lacerta.tiscalinet.it

-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Al posto di READLINE usa    READ(  lunghezza record )
Private Sub LeggiFileTxt()
Dim Fs, FileTxt
Dim Riga As String
Set Fs = CreateObject("Scripting.FileSystemObject")
Set FileTxt = Fs.OpenTextFile(App.Path & "\Indice.txt", 1, True, 0)
Do While FileTxt.AtEndOfStream = False
      Riga = FileTxt.Read(100)              ' NELLE PARENTESI INSERISCI LA
LUNGHEZZA
                                                           ' DEL RECORD DEL
FILE
      cognome=mid(riga,1,25)
      cap=mid(riga,26,5)
      citta=mid(riga,31,25)
Loop
End Sub
"antonio" <ant...@NOSPAMplease.com> ha scritto nel messaggio
news:c8ce4e$u2t$1...@lacerta.tiscalinet.it...
