Originariamente inviato da felixiuc91
Ciao a tutti,
Sono un utente nuovo registrato, frequento da tanto il vostro sito con le guide fatte benissimo, però ora ho un problema su cui sto fermo da 1 giorno.
Sto creando una piccola rubrica telefonica constituita da nome/cognome/tel. gestita con i record.
Fin qui tutto bene, solo che vorrei andare oltre, cioè salvare il contenuro del record in un file di testo.
Supponiamo di avere
codice:
v(x).cognome                v(x).nome         v(x).telefono
Rossi                              Pietro             11111
Colombo                          Marco             22222
Dovrei portare tutto in un documento di testo nel formato
Data e ora giorno ->attraverso la funzione Time Date
2 ->numero di dati contenuti in ogni vettore
rossi
colombo ->prima i cognomi
Pietro
Marco ->i nomi
11111
2222 ->ed i telefoni

Per il caricamento uso

codice:
Private Sub Form_Load()     
c=1
n=2                                'i dati presenti
Open "E:\esempio.txt" For Append As #1         
   Print #1, Date  + Time 
   Print #1, N 
   Do while c<=n    
      Print #1, v(c).cognome
      c=c+1
   Loop  
   c=1
   Do while c<=n    
      Print #1, v(c).nome
      c=c+1
   Loop 
   c=1
   Do while c<=n    
      Print #1, v(c).telefono
      c=c+1
   Loop    
Close #1 
End Sub
Il problema sorge quando devo fare il procedimento contrario, premendo un pulsante
Effettivamente ci sono un po' di incongruenze...

Se usi variabili come:
v(c).nome
evidentemente hai organizzato i dati con un "tipo definito dall'utente", ed in questo caso verrebbe naturale leggere/scrivere i record come "file random" (v. la guida del VB6 di Open, ad es.), e non sequenziale.

Poi elimina quel brutto "Date + Time" e usa "Now" che produce lo stesso risultato (e' anche meglio usare "&" anziche' "+" per unire...)

Se proprio vuoi usare un file sequenziale di testo, dovresti:
- usare Write# anziche' Print# per scrivere i dati (e' piu' sicuro, se l'utente usa delle virgole o car. strani con Print... )
- sapendo gia' che i dati sono N, e' piu' comodo usare un ciclo For, anziche' l'equivalente struttura Do...Loop
- usa poi Input# per rileggere i dati, ovviamente nello stesso ordine in cui li hai scritti.

Perche' poi fare un ciclo su tutti i dati, ripetuto per ogni campo ? ...meglio un unico ciclo, no ?
codice:
   For c = 1 To n
     Write #1, v(c).cognome
     Write #1, v(c).nome
     Write #1, v(c).telefono
   Next
Ciao !