Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Problema con eof in un archivio sequenziale
Forum - Visual Basic 6 - Problema con eof in un archivio sequenziale

Avatar
Dyango (Normal User)
Pro


Messaggi: 83
Iscritto: 02/01/2009

Segnala al moderatore
Postato alle 17:08
Lunedė, 14/12/2009
ciao ragazzi praticamente io dopo aver ciclato fino alla fine del file e aver letto tutti i record dovrei di nuovo leggere i record del file pero essendo alla fine del file giustamente non mi entra piu nel ciclo until eof(3) come posso fare per rileggere i record nell archivio (forse dovrei spostare il puntatore che ora e alla fine del file su all inizio del file:-|) vi allego il codice cosi capite meglio

Codice sorgente - presumibilmente Delphi

  1. a00_op_Iniziali
  2.     n_licen = InputBox("inserire quandi dipedenti si vuole eliminare dall'archivio")
  3.    For num_volte = 1 To n_licen
  4.        cod_lic = InputBox("Inserire il codice del dipendente da licenziare")
  5.        Write #3, cod_lic
  6.    Next
  7.    Close #3
  8.    Open App.Path & "\dipendenti_licenziati.txt" For Input As #3
  9.    Do Until EOF(1)
  10.       Input #1, cod_dip, anno, mese, ore_ord, ore_stra
  11.       Do Until EOF(3)
  12.          Input #3, cod_lic
  13.          If cod_dip <> cod_lic Then
  14.             Write #2, cod_dip, anno, mese, ore_ord, ore_stra
  15.          Else
  16.             trovato = "no"
  17.          End If
  18.       Loop
  19.   Loop
  20.   If trovato <> "no" Then
  21.      MsgBox ("Nessuna corrispondenza con i dati inseriti")
  22.   Else
  23.      MsgBox ("Operazione completata con successo")
  24.   End If
  25.   Close
  26.  
  27.  
  28. Private Sub a00_op_Iniziali()
  29.   Open App.Path & "\dipendenti.txt" For Input As #1
  30.   Open App.Path & "\dipendenti_agg.txt" For Output As #2
  31.   Open App.Path & "\dipendenti_licenziati.txt" For Append As #3
  32. End Sub




Ultima modifica effettuata da Dyango il 14/12/2009 alle 17:30
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 17:27
Lunedė, 14/12/2009
vedendo quel codice diciamo che non č che mi si siano schiarite molto le idee...

comunque per rileggere il file se ancora non č stato chiuso puoi usare sempre come "numero" 3 nel senso : Open ... as input #3

altrimenti se il file ancora non č stato chiuso usi 4

puoi usare anche una variabile del tipo

dim n as integer
n = 3
Open ... as input #n
e poi la incrementi con: n = n + 1

oppure usi n = FreeFile che da a n un "numero libero"

Ultima modifica effettuata da GrG il 14/12/2009 alle 17:28
PM Quote
Avatar
Dyango (Normal User)
Pro


Messaggi: 83
Iscritto: 02/01/2009

Segnala al moderatore
Postato alle 19:21
Lunedė, 14/12/2009
Testo quotato

Postato originariamente da GrG:

vedendo quel codice diciamo che non č che mi si siano schiarite molto le idee...

comunque per rileggere il file se ancora non č stato chiuso puoi usare sempre come "numero" 3 nel senso : Open ... as input #3 mi da errore se lo riapro sempre con lo stesso nome logico

altrimenti se il file ancora non č stato chiuso usi 4 se metto 4 mi mi sballa la lettura avendo messo io 3 ma nella parte dopo hai fornito la soluzione ma...

puoi usare anche una variabile del tipo

dim n as integer
n = 3
Open ... as input #n
e poi la incrementi con: n = n + 1   troppo macchinoso a parer mio

oppure usi n = FreeFile che da a n un "numero libero" stesso problema di quando mi hai consigliato il 4


grazie grg per le risposte ma mi sono accorto che che spostando alcune istruzioni che avevo posizionato male per colpa della fretta ottengo proprio quello che voglio
nuovo codice:
Codice sorgente - presumibilmente Delphi

  1. a00_op_Iniziali
  2.     n_licen = InputBox("inserire quandi dipedenti si vuole eliminare dall'archivio")
  3.    For num_volte = 1 To n_licen
  4.        cod_lic = InputBox("Inserire il codice del dipendente da licenziare")
  5.        Write #3, cod_lic
  6.    Next
  7.    Close #3
  8.    
  9.    Do Until EOF(1)
  10.       Input #1, cod_dip, anno, mese, ore_ord, ore_stra
  11.       Open App.Path & "\dipendenti_licenziati.txt" For Input As #3 'apro il file 3 dentro il ciclo until EOF(1)
  12.        Do Until EOF(3)
  13.           Input #3, cod_lic
  14.           If cod_dip <> cod_lic Then
  15.              Write #2, cod_dip, anno, mese, ore_ord, ore_stra
  16.              trovato = "si"
  17.           End If
  18.        Loop
  19.        Close #3  'aggiunto questo tra i due loop
  20.   Loop
  21.   If trovato = "si" Then
  22.      MsgBox ("Operazione completata con successo")
  23.   Else
  24.      MsgBox ("Nessuna corrispondenza con i dati inseriti")
  25.   End If
  26.   Close


Ultima modifica effettuata da Dyango il 14/12/2009 alle 19:25
PM Quote