Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Come leggere una sola riga in un file sequenziale

Ho un file sequenziale, composto da diverse righe o meglio, record. Voglio
aprire il file ed andare a leggere solamente, per esempio, la riga 5: le
altre righe non mi interessano. Si può fare? Ho letto l'help dell'istruzione
Line Input e Line Input# ma mi sembra non facciano al caso mio.
Grazie
Ciao
Cesare Nicola

 wrote in message
7g4tr7$ijq$1...@nslave1.tin.it...

La risposta e' gia' nella tua domanda: sequenziale. Vuol dire prima il
primo, poi il secondo, poi il terzo... e via cosi'. Quando leggi, nel tuo
caso, il quinto, ti fermi e chiudi. Senno' non sarebbe sequenziale. Questo
ti permette di avere record di lunghezza variabile. Diverso sarebbe il caso
se tu sapessi a priori la posizione e la lunghezza del tuo record, allora
potresti accedere direttamente...
--
Ciao.
Maurizio

potresti accedere direttamente...
Non ho ancora le idee chiarissime, ma forse è proprio questo, il mio caso.
Nella riga 5 potrò avere sempre e solo una variabile, per esempio "pippo", e
dovrò sapere se pippo=true o pippo=false, oppure pippo=0 e pippo=1. Posso
quindi accedere direttamente alla riga 5? E come? Mi serve più che altro per
imparare, in quanto posso tranquillamente leggere tutto il file o solo le
prime 5 righe, scartando tutto ciò che non serve: questo però lo so già
fare, quindi è ora di qualcosa di nuovo e più "professional"! :)
Grazie ancora
Ciao
Cesare Nicola

do while not eof(1)
riga=riga+1
lineinput#1, stringa
if riga = 5 then
    istruzioni che ti servono
        exit loop
            end if
loop
in pratica se il file è ad accesso sequenziale (cioè hai scritto
informazioni con OutPut Append) non c'è modo di leggere direttamente la
quinta riga se non cominciando dalla prima... per cui quel ciclo legge tutte
le righe finchè non arriva alla quella che ti interessa.
Per poter accedere ad una determinata riga o record dobbiamo avvelerci di un
file ad accesso casuale (cioè quelli Random) dove potresti leggere la 5°
riga semplicemente con Get#1,5,stringa
Il problema (neanche tanto) dei file ad accesso casuale è che devi impostare
la lunghezza della stringa con Len= 100 e quindi scrivere all'interno del
file solo stringhe di 100 caratteri nè più nè meno. Nota.. nell'impostare la
lunghezza del record aumenta di due unità ... se le stringhe sono lunghe 100
tu imposti Len=102 (questa cosa non c'è scritta da nessuna parte... :-)))
Per identificare la quantità di record fai così   record=Int(lof(1)/102)
esempio
Open app.path+"\File.txt" for Random as #1 Len = 102
TotaleRecord = int(lof(1)/102)
a questo punto sai quanti record sono presenti nel file. Se li devi leggere
tutti fai
For a = 1 to TotaleRecord
    Get#1, a, Stringa
            Next a
se invece devi leggere soltanto la quinta riga fai
Get#1, 5, stringa
bye

 La risposta e' gia' nella tua domanda: sequenziale. [...]
... ma nella tua domanda c'e' anche l'inesattezza che puo' portare ad
individuare male il problema o la soluzione: non esistono i file sequenziali
ma e' l'accesso al file che puo' essere o non essere sequenziale. I file
sono insiemi di dati la cui organizzazione o struttura e' decisa da chi li
crea e, quando vi si accede - in lettura, scrittura o lettura e scrittura -
bisogna tenerne conto.
--
Ciao.
Maurizio

 fare, quindi è ora di qualcosa di nuovo e più "professional"! :)
Riassumendo. Se la struttura del tuo file segue le regole dei file INI:
[NomeSezione]
Chiave=Valore
ti conviene apprendere l'uso delle API apposite.
Visita il Sito comune 
www.murialdo.it/it_lang_vb
. Se nulla e' cambiato
seguendo il percorso "Piccole Perle"/"Le FAQ"/"Le prime Piccole Perle"/"API
per gestire i file INI" dovresti trovare, a cura di Ettore Maronese, tutto
quello che ti serve.
Se, invece, vuoi leggere un certo numero di byte, partendo da una posizione
prefissata, puoi aprire il file in modo binario ed assegnare cio' che hai
letto ad una variabile di tipo opportuno. Per questo leggi la guida in linea
(e gli esempi!) alle voci Open, Seek, Get
--
Ciao.
Maurizio

Grazie a tutti. Ora mi č chiara una cosa: allo stato attuale, non so un fico
secco di come si legge e si scrive un file!  :))
 I libri che uso, non č che si sprechino piů di tanto sull'argomento:
cercherň di fare un pň di prove per capirci un pň di piů.
Ciao
Cesare Nicola