Line Input: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
'''Line Input''' legge all'interno di un file di testo un'intera riga di caratteri non interrotta da un carattere di "''ritorno a capo''". Quindi la riga sarà letta tutta quanta <SPAN style="text-decoration:underline">fino</span> al carattere di ''ritorno a capo''. | '''Line Input''' legge all'interno di un file di testo un'intera riga di caratteri non interrotta da un carattere non stampabile di "''ritorno a capo''" (ossia un byte avente valore x0A (''Line feed character''). Quindi la riga sarà letta tutta quanta <SPAN style="text-decoration:underline">fino</span> al carattere non stampabile di ''ritorno a capo''. | ||
Ponendo eventualmente la funzione ''Seek'', si va a leggere dal byte puntato da Seek sino al primo dato avente valore x0A. | |||
Se per esempio il file di testo è così strutturato: | Se per esempio il file di testo è così strutturato: | ||
| Riga 5: | Riga 8: | ||
''all'interno di un file.'' | ''all'interno di un file.'' | ||
sarà letta la sola intera prima stringa: ''Line Input legge'' . | sarà letta la sola intera prima stringa: ''Line Input legge'' . | ||
<BR>Infatti, se esaminiamo il file con un editor esadecimale, noteremo che immediatamente dopo i byte, che rappresentano i caratteri della parola "''legge''", è presente il carattere esadecimale 0A, il quale a sua volta rappresenta appunto il carattere ''escape'' di "''ritorno a capo''". | <BR>Infatti, se esaminiamo il file con un editor esadecimale, noteremo che immediatamente dopo i byte, che rappresentano i caratteri della parola "''legge''", è presente il carattere ''non stampabile'' esadecimale <FONT color=red>0A</font> (''Line feed character''), il quale a sua volta rappresenta appunto il carattere ''escape'' di "''ritorno a capo''". | ||
Versione delle 10:37, 7 nov 2013
Line Input legge all'interno di un file di testo un'intera riga di caratteri non interrotta da un carattere non stampabile di "ritorno a capo" (ossia un byte avente valore x0A (Line feed character). Quindi la riga sarà letta tutta quanta fino al carattere non stampabile di ritorno a capo.
Ponendo eventualmente la funzione Seek, si va a leggere dal byte puntato da Seek sino al primo dato avente valore x0A.
Se per esempio il file di testo è così strutturato:
Line Input legge all'interno di un file.
sarà letta la sola intera prima stringa: Line Input legge .
Infatti, se esaminiamo il file con un editor esadecimale, noteremo che immediatamente dopo i byte, che rappresentano i caratteri della parola "legge", è presente il carattere non stampabile esadecimale 0A (Line feed character), il quale a sua volta rappresenta appunto il carattere escape di "ritorno a capo".
Esempio di lettura con Line Input e successiva scrittura in un file di testo
Poniamo il caso che nel file di testo vi siano queste righe composte dalle sole seguenti semplici parole:
sale
pepe
pane
pasta
cacio
Andiamo a cambiare la seconda riga del file di testo con la parola: olio:
Public Sub Button1_Click()
Dim f As File
Dim s$, sss As String
Dim a As Byte
' Dichiaro quindi anche una variabile array di tipo stringa con numero elementi non definito.
' Non lo definisco, poiché abbiamo ammesso che non conosco il numero esatto di righe
' contenute dal file di testo:
Dim sArr$ As String[]
' apro il mio file di testo:
f = Open "/percorso_mio_file" For Input
' creo la variabile stringa array:
sArr$ = New String[]
' Vado a leggere tutte le righe del file:
While Not Eof(f) ' compie il ciclo fin tanto che non è giunto alla fine del file
Line Input #f, s$
' carico ogni nuova riga in un nuovo elemento della variabile array:
sArr$.Add(s$)
Wend
' chiudo il file aperto in modalità Input:
Close #f
' A questo punto del codice ho letto tutto il file di testo.
'-----------------------------------------------------------------------
' Passo quindi a trasformare il contenuto del file di testo.
' In particolare, come era nella mia iniziale intenzione:
' modificare la seconda riga con la parola: olio.
' Ho bisogno di un ciclo per ricostruire riga dopo riga il nuovo file di testo.
For a = 0 To sArr$.Max
If a = 1 Then
' se sono giunto alla seconda riga (il conteggio inizia da zero !),
' allora il contenuto del 2° elemento dell'indice
' della variabile array di tipo stringa sarà: olio:
sArr$[a] = "olio"
Endif
' la variabile stringa "sss" è uguale alla precedente versione
' di se stessa + la successiva riga + il carattere "riga a capo":
sss = sss & sArr$[a] & "\n"
Next
' vado a salvare il nuovo file di testo
' (ora modificato nella sua 2^ riga):
File.Save("/percorso_mio_file", sss)
End