Newsgroup: it.comp.lang.visual-basic
Titolo: problema con i file sequenziali

Salve a tutti .
In fase di lettura di un file sequenziale ho una linea  contenente  5
variabili che mi caricano altrettanti dati,del tipo:
 Open nomefile For Input As #1
       Input #1,.....................................
       Input #1,  Dato1,  Dato2,  Dato3, Dato4, Dato5
       Input #1,........................................
 Close #1
Purtroppo mi ritrovo con vecchi files da aprire che nella stessa linea
avevano solo i primi 3 dati.
Ora in questo caso è ovvio che il caricamento si sballa perche il Dato4 e5
li va a leggere nella linea successiva.
Come posso fare per far si che si "accorga"  se la linea finisce al terzo
dato e quindi deve passare alla successiva,
oppure se deve proseguire a caricare il dato 4 e 5 (qualora presenti)?
Grazie per l' aiuto.
Massimo Riccardi

 ha scritto nel messaggio
news:bvgspf$9a5$1...@lacerta.tiscalinet.it...

E' solo la prima idea che mi è venuta in mente: non so se ti può andare
bene, ma teoricamente potrebbe funzionare:
Leggi una riga di dati con Line Input. Fai lo split della riga dei dati e
guardi quanti elementi ti ha messo nell'array.
A questo punto dovrai avere 2 codici diversi, a seconda se gli elementi
(quindi i dati) dell'array siano 3 oppure 5...
-- 
Esteban
www.seber.it

 oppure se deve proseguire a caricare il dato 4 e 5 (qualora presenti)?
Usa Line Input anziché Input, poi fai una Split sulla stringa letta,
e puoi controllare con Ubound il numero di elementi dell'array.
Dim Campi as Variant
Campi = Split(Riga, " ")
If UBound(Campi) = 3 Then...
Bye, G.

 ha scritto nel messaggio
news:bvgv5u$r7ssl$1...@ID-108681.news.uni-berlin.de...

Attenzione, che di norma (se non imposti Option Base 1) l'indice inferiore
di un array è 0 e di conseguenza l'indice superiore sarà uguale al numero di
elementi meno uno.
Quindi:
If UBound(Campi) + 1 = 3 Then...
oppure, ricordandoti di quanto ho detto sopra:
If UBound(Campi) = 2 Then...
-- 
Esteban
www.seber.it

 uguale al numero di elementi meno uno.
Ops, vero... :-(
Bye, G.


Però mi pareva strano: ho fatto copia e incolla da un mio prog, ed
ero sicuro che mi desse il numero reale di elementi; ho ricontrollato,
e infatti...
Poi ho scoperto il problema: la Split nel VB5 che uso non esiste, quella
era emulata da una Function in VB. Siccome era usata in maniera
abbastanza pesante, e già essendo una emulazione non era il
massimo della velocità, mi scocciava dover giocare ogni volta con
quei "- 1" e "+ 1", allora avevo modificato il sorgente della funzione.
Lo so, lo so, è una cazzata ancora peggiore che non aver sbagliato
il post, ma lì mi serviva da spremere tutta la _velocità_  possibile.
O:-)
Bye, G.

 ha scritto nel messaggio
news:bvgvd5$s28o9$1...@ID-217323.news.uni-berlin.de...


 Campi = Split(Riga, ", ")
Mmmmm, ho l'impressione che 'sta cosa, detta come l'hai detta, non verrà
bene accolta, anche perchè quel "piccolo e importante dettaglio" tu non
l'hai menzionato prima. Inoltre, suggerita la funzione giusta in termini
esemplificativi, occorre leggerne l'help prima di applicarla...

 ha scritto nel messaggio
news:bvij9n$sq54r$1...@ID-174464.news.uni-berlin.de...

Guarda che  non c'era nella mia frase alcuna intenzione polemica anzi ,visto
che conosco la mia ignoranza,
ho ringraziato  per l'aiuto che mi è stato fornito.
Credevo al contrario di essere stato preciso visto che nel mio esempio:
       Input #1,  Dato1,  Dato2,  Dato3, Dato4, Dato5
come vedi le virgole comparivano tra i vari dati e pensavo che la risposta
tenesse conto di questo.
Un saluto.
Massimo Riccardi
Massimo

 Un saluto.
A te.