Differenze tra le versioni di "Line Input"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
  
Se per esempio il file di testo è così strutturato:
+
===Esempio di lettura con ''Line Input''===
 +
Se per esempio il file di testo è così strutturato con due righe:
 
  ''Line Input legge''
 
  ''Line Input legge''
 
  ''all'interno di un file.''
 
  ''all'interno di un file.''
sarà letta la sola intera prima stringa: ''Line Input legge'' .
+
ed andiamo a leggere con ''Line Input''
<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''".
+
'''Public''' Sub Button1_Click()
 +
 +
  Dim fl As File
 +
  Dim s As String
 +
 +
 +
  fl = Open "''/percorso/del/mio/file''" For Input
 +
 +
  <FONT color=#B22222>Line Input</font> #fl, s
 +
 +
  Print s
 +
 +
  fl.Close
 +
 +
'''End'''
 +
sarà letta la sola intera prima riga del file di testo: ''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 ''non stampabile'' esadecimale <FONT color=red>0A</font> (''Line feed character''), il quale rappresenta appunto il carattere ''escape'' di "''ritorno a capo''".
  
  
===Esempio di lettura con ''Line Input'' e successiva scrittura in un file di testo===
+
===Esempio di lettura dell'intero file con ''Line Input''===
Poniamo il caso che nel file di testo vi siano queste righe composte dalle sole seguenti semplici parole:
+
Volendo, invece, leggere tutte le righe del file di testo, useremo ovviamente un ciclo:
<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()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
   Dim f As File
+
   Dim fl As File
   Dim s$, sss As String
+
   Dim s As String
  Dim a As Byte
+
   
 
+
   
<FONT color=#006400>' ''Dichiaro quindi anche una variabile array di tipo stringa con numero elementi non definito.''
+
   fl = Open "''/percorso/del/mio/file''" For Input
' ''Non lo definisco, poiché abbiamo ammesso che non conosco il numero esatto di righe''
+
   
' ''contenute dal file di testo:''</font>
+
   While Not fl(Eof)   <FONT color=gray>' ''Fin tanto che non si è giunti alla fine dei dati del file...''</font>
  Dim sArr$ As String[]  
+
    <FONT color=B22222>Line Input</font> #fl, s  <FONT color=gray>' ''...legge un'intera riga''</font>
 
+
     Print s
 
+
  Wend
  <FONT color=#006400>' ''apro il mio file di testo:''</font>
+
   
   f = Open "''/percorso/del/mio/file''" For Input
+
   fl.Close
 
 
  <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>
 
 
 
  <FONT color=#B22222>Line Input</font> #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.''
 
'-----------------------------------------------------------------------
 
 
 
' ''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] = "olio"
 
    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("''/percorso/del/mio/file''", sss) 
 
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 09:50, 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.


Esempio di lettura con Line Input

Se per esempio il file di testo è così strutturato con due righe:

Line Input legge
all'interno di un file.

ed andiamo a leggere con Line Input

Public Sub Button1_Click()

 Dim fl As File
 Dim s As String


  fl = Open "/percorso/del/mio/file" For Input

  Line Input #fl, s

  Print s

  fl.Close

End

sarà letta la sola intera prima riga del file di testo: 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 rappresenta appunto il carattere escape di "ritorno a capo".


Esempio di lettura dell'intero file con Line Input

Volendo, invece, leggere tutte le righe del file di testo, useremo ovviamente un ciclo:

Public Sub Button1_Click()

 Dim fl As File
 Dim s As String


  fl = Open "/percorso/del/mio/file" For Input

  While Not fl(Eof)   ' Fin tanto che non si è giunti alla fine dei dati del file...
    Line Input #fl, s   ' ...legge un'intera riga
    Print s
  Wend

  fl.Close

End