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...)
 
 
(25 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
'''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)'' ).
+
'''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 <SPAN style="text-decoration:underline">fino</span> al carattere non stampabile di ''ritorno a capo''.
  
Se per esempio il file di testo è così strutturato:
+
 
<BR>''Line Input legge''
+
===Esempio di lettura con "Line Input"===
<BR>''all'interno di un file.''
+
Se per esempio il file di testo è così strutturato con due righe:
<BR>sarà letta la sola intera prima stringa: ''Line Input legge'' .
+
''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''".
+
''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 "<FONT Color=darkgreen>''/percorso/del/file''</font>" 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 valore esadecimale <FONT color=red>0A</font> (''Line feed character'' ), il quale rappresenta appunto il carattere non stampabile ''escape'' di ''ritorno a capo'' ("\n").
 +
 
 +
====Uso dell'istruzione "SeeK"====
 +
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 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 "<FONT Color=darkgreen>''/percorso/del/file''</font>" 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 fino al carattere escape di "nuova riga a capo"''</font>
 +
    Print s
 +
  Wend
 +
 +
  fl.Close
 +
 +
End
 +
La verifica potrà avvenire anche usando la Proprietà ".EndOfFile" della Classe ''File'':
 +
  While Not <FONT color=B22222>fl.EndOfFile</font>
 +
    ...etc...

Versione attuale delle 08:45, 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.


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 valore esadecimale 0A (Line feed character ), il quale rappresenta appunto il carattere non stampabile escape di ritorno a capo ("\n").

Uso dell'istruzione "SeeK"

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 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 fino al carattere escape di "nuova riga a capo"
   Print s
 Wend

 fl.Close

End

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

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