Differenze tra le versioni di "Line Input"

Da Gambas-it.org - Wikipedia.
Riga 13: Riga 13:
 
   Dim s As String
 
   Dim s As String
 
   
 
   
   fl = Open "<FONT Color=drakgreen>''/percorso/del/file''</font>" For Input
+
   fl = Open "<FONT Color=darkgreen>''/percorso/del/file''</font>" For Input
 
   
 
   
 
   <FONT color=#B22222>Line Input</font> #fl, s
 
   <FONT color=#B22222>Line Input</font> #fl, s

Versione delle 07:35, 29 ott 2023

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 fino al carattere non stampabile di ritorno a capo.

Ovviamente, se si ponesse l'istruzione "Seek" (prima dell'istruzione "Line Input"), si leggerebbe dal byte puntato da "Seek" sino al primo dato avente valore &h0A ("\n").

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 " ("\n").


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...