Differenze tra le versioni di "Line Input"
Riga 32: | Riga 32: | ||
<FONT color=#006400>' ''apro il mio file di testo:''</font> | <FONT color=#006400>' ''apro il mio file di testo:''</font> | ||
− | f = Open "/ | + | f = Open "''/percorso/del/mio/file''" For Input |
<FONT color=#006400>' ''creo la variabile stringa array:''</font> | <FONT color=#006400>' ''creo la variabile stringa array:''</font> | ||
Riga 74: | Riga 74: | ||
<FONT color=#006400>' ''vado a salvare il nuovo file di testo'' | <FONT color=#006400>' ''vado a salvare il nuovo file di testo'' | ||
' ''(ora modificato nella sua 2^ riga):''</font> | ' ''(ora modificato nella sua 2^ riga):''</font> | ||
− | File.Save("/ | + | File.Save("''/percorso/del/mio/file''", sss) |
'''End''' | '''End''' |
Versione delle 09:39, 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/del/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/del/mio/file", sss) End