Differenze tra le versioni di "Line Input"

Da Gambas-it.org - Wikipedia.
(Nuova pagina: '''Line Input''' legge all'interno di un file di testo un'intera riga di caratteri non interrotta da un carattere di "''ritorno a capo''" (''\n'' o anche ''chr(10)'' ). Se per esempio...)
 
Riga 6: Riga 6:
 
<BR>sarà letta la sola intera prima stringa: ''Line Input legge'' .
 
<BR>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''" sarà 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''" sarà presente il carattere esadecimale 0A, il quale a sua volta rappresenta appunto il carattere ''escape'' di "''ritorno a capo''".
 +
 +
 +
Esempio di lettura e scrittura in un file di testo con ''Line Input''. Poniamo il caso che nel file di testo vi siano queste righe composte dalle seguenti parole:
 +
<BR>sale
 +
<BR>pepe
 +
<BR>pane
 +
<BR>pasta
 +
<BR>cacio
 +
<BR>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
 +
 
 +
<FONT color=#006400>' ''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:''</font>
 +
  Dim sArr$ As String[] 
 +
 
 +
 
 +
<FONT color=#006400>' ''apro il mio file di testo:''</font>
 +
  f = Open "/percorso_mio_file" For Input 
 +
 
 +
<FONT color=#006400>' ''creo la variabile stringa array:''</font>
 +
  sArr$ = New String[] 
 +
 
 +
<FONT color=#006400>' ''Vado a leggere tutte le righe del file:''</font>
 +
  While Not Eof(f)    <FONT color=#006400>' ''compie il ciclo fin tanto che non è giunto alla fine del file''</font>
 +
 
 +
  Line Input #f, s$ 
 +
 
 +
<FONT color=#006400>' ''carico ogni nuova riga in un nuovo elemento della variabile array:''</font>
 +
  sArr$.Add(s$) 
 +
   
 +
  Wend   
 +
 
 +
<FONT color=#006400>' ''chiudo il file aperto in modalità Input:''</font>
 +
  Close #f 
 +
 
 +
<FONT color=#006400>' ''A questo punto del codice ho letto tutto il file di testo.''</font>
 +
'----------------------------------------------------------------------- 
 +
 
 +
<FONT color=#006400>' ''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.''</font>
 +
  For a = 0 To sArr$.Max 
 +
 
 +
    If a = 1 Then 
 +
<FONT color=#006400>' ''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:''</font>
 +
    sArr$[a] = "Alì Babà"
 +
    Endif 
 +
 
 +
<FONT color=#006400>' ''la variabile stringa "sss" è uguale alla precedente versione''
 +
' ''di se stessa + la successiva riga + il carattere "riga a capo":''</font>
 +
  sss = sss & sArr$[a] & "\n"
 +
 
 +
  Next 
 +
 
 +
<FONT color=#006400>' ''vado a salvare il nuovo file di testo'' 
 +
' ''(ora modificato nella sua 2^ riga):''</font>
 +
    File.Save("/home/ploppo/Scrivania/simia2", sss) 
 +
 +
'''End'''

Versione delle 15:57, 3 giu 2012

Line Input legge all'interno di un file di testo un'intera riga di caratteri non interrotta da un carattere di "ritorno a capo" (\n o anche chr(10) ).

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" sarà presente il carattere esadecimale 0A, il quale a sua volta rappresenta appunto il carattere escape di "ritorno a capo".


Esempio di lettura e scrittura in un file di testo con Line Input. Poniamo il caso che nel file di testo vi siano queste righe composte dalle seguenti 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] = "Alì Babà"
   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("/home/ploppo/Scrivania/simia2", sss)  

End