Differenze tra le versioni di "Line Input"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
'''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''.
+
'''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 &h0A - ''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.
+
Ovviamente, se si ponesse la funzione ''Seek'' (prima dell'istruzione ''Line Input''), si andrebbe a leggere dal byte puntato da ''Seek'' sino al primo dato avente valore &h0A.
  
  
Riga 9: Riga 9:
 
  ''all'interno di un file.''
 
  ''all'interno di un file.''
 
ed andiamo a leggere con ''Line Input''
 
ed andiamo a leggere con ''Line Input''
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim s As String
 
   Dim s As String
 
   
 
   
 +
  fl = Open "<FONT Color=gray>''/percorso/del/file''</font>" For Input
 
   
 
   
  fl = Open "''/percorso/del/mio/file''" For Input
+
  <FONT color=#B22222>Line Input</font> #fl, s
 
   
 
   
  <FONT color=#B22222>Line Input</font> #fl, s
+
  Print s
 
  Print s
 
 
   
 
   
 
   fl.Close
 
   fl.Close
Riga 28: Riga 27:
  
  
===Esempio di lettura dell'intero file con ''Line Input''===
+
===Esempio di lettura dell'intero file===
Volendo, invece, leggere tutte le righe del file di testo, useremo ovviamente un ciclo:
+
Volendo, invece, leggere tutte le righe del file di testo, useremo ovviamente un ciclo, verificando mediante la funzione nativa "Eof()" se si è giunti alla fine del file:
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim s As String
 
   Dim s As String
 
   
 
   
 +
  fl = Open "<FONT Color=gray>''/percorso/del/file''</font>" For Input
 
   
 
   
  fl = Open "''/percorso/del/mio/file''" For Input
+
  While Not Eof(fl)  <FONT color=gray>' ''Fin tanto che non si è giunti alla fine dei dati del file...''</font>
 +
    <FONT color=B22222>Line Input</font> #fl, s  <FONT color=gray>' ''...legge un'intera riga''</font>
 +
    Print s
 +
  Wend
 
   
 
   
  While Not fl(Eof)   <FONT color=gray>' ''Fin tanto che non si è giunti alla fine dei dati del file...''</font>
+
   fl.Close
    <FONT color=B22222>Line Input</font> #fl, s  <FONT color=gray>' ''...legge un'intera riga''</font>
 
    Print s
 
  Wend
 
 
  fl.Close
 
 
   
 
   
 
  '''End'''
 
  '''End'''
 +
La verifica potrà avvenire anche usando la Proprietà ".EndOfFile" della Classe ''File'':
 +
  While Not <FONT color=B22222>fl.EndOfFile</font>
 +
    ...etc...

Versione delle 10:27, 9 gen 2022

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 &h0A - Line feed character). Quindi la riga sarà letta tutta quanta fino al carattere non stampabile di ritorno a capo.

Ovviamente, se si ponesse la funzione Seek (prima dell'istruzione Line Input), si andrebbe a leggere dal byte puntato da Seek sino al primo dato avente valore &h0A.


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 Main()

 Dim fl As File
 Dim s As String

 fl = Open "/percorso/del/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

Volendo, invece, leggere tutte le righe del file di testo, useremo ovviamente un ciclo, verificando mediante la funzione nativa "Eof()" se si è giunti alla fine del file:

Public Sub Main()

 Dim fl As File
 Dim s As String

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

 While Not Eof(fl)   ' 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

La verifica potrà avvenire anche usando la Proprietà ".EndOfFile" della Classe File:

 While Not fl.EndOfFile
   ...etc...