Differenze tra le versioni di "Raccogliere solo alcune righe all'interno di un file di testo"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
Mostreremo di seguito un possibile algoritmo per raccogliere da un file di testo solo alcune righe, individuando la prima riga da raccogliere non da un numero d'indice (ad esempio: la 20<SUP>a</sup> riga), bensì dal proprio testo attraverso l'struzione "[https://gambaswiki.org/wiki/lang/begins?l=it Begins]".
+
Mostreremo di seguito un possibile algoritmo per raccogliere da un file di testo solo alcune righe, individuando la prima riga da raccogliere non da un numero d'indice (ad esempio: la 20<SUP>a</sup> riga), bensì dal proprio testo attraverso l'operatore "[https://gambaswiki.org/wiki/lang/begins?l=it Begins]".
  
 
Come esempio prederemo dal file header ''/alsa/seq_event.h'' soltanto le righe appartenenti della dichiarazione della ''Struttura'' "snd_seq_event_t", escludendo quelle che in gnerale iniziano con il carattere "#", fatta eccezione per quelle che inziano con la ''direttiva'' di C "#include".
 
Come esempio prederemo dal file header ''/alsa/seq_event.h'' soltanto le righe appartenenti della dichiarazione della ''Struttura'' "snd_seq_event_t", escludendo quelle che in gnerale iniziano con il carattere "#", fatta eccezione per quelle che inziano con la ''direttiva'' di C "#include".
Riga 16: Riga 16:
 
     s = fl.ReadLine()
 
     s = fl.ReadLine()
 
  <FONT Color=gray>' ''Raccoglie comunque le righe che iniziano con la direttiva "#include" di C:''</font>
 
  <FONT Color=gray>' ''Raccoglie comunque le righe che iniziano con la direttiva "#include" di C:''</font>
     If s Begins "#include" Then t &= s & "\n\n"
+
     If s <FONT Color=#B22222>Begins</font> "#include" Then t &= s & "\n\n"
 
     If s = "typedef struct snd_seq_event {" Then v = True
 
     If s = "typedef struct snd_seq_event {" Then v = True
     If s Begins "#" Then Continue
+
     If s <FONT Color=#B22222>Begins</font> "#" Then Continue
 
     If v Then t &= Chr(10) & s
 
     If v Then t &= Chr(10) & s
 
  <FONT Color=gray>' ''Il ciclo dura sino a quando "v" non diventa vera e contemporaneamente "s" non diventa uguale a "} snd_seq_event_t;":''</font>
 
  <FONT Color=gray>' ''Il ciclo dura sino a quando "v" non diventa vera e contemporaneamente "s" non diventa uguale a "} snd_seq_event_t;":''</font>

Versione delle 15:02, 11 set 2022

Mostreremo di seguito un possibile algoritmo per raccogliere da un file di testo solo alcune righe, individuando la prima riga da raccogliere non da un numero d'indice (ad esempio: la 20a riga), bensì dal proprio testo attraverso l'operatore "Begins".

Come esempio prederemo dal file header /alsa/seq_event.h soltanto le righe appartenenti della dichiarazione della Struttura "snd_seq_event_t", escludendo quelle che in gnerale iniziano con il carattere "#", fatta eccezione per quelle che inziano con la direttiva di C "#include".

Il procedimento fondamentale è l'individuazione della prima e dell'ultima riga del gruppo di righe da raccogliere. All'interno di queste due righe, iniziale e finale, si raccoglieranno o escluderanno le righe ivi esistenti:

Public Sub Main()

 Dim fl As File
 Dim s, t As String
 Dim v As Boolean

 fl = Open "/usr/include/alsa/seq_event.h" For Read

' Leggiamo il file dall'inizio fino all'ultima riga della dichiarazione della "Struttura" in questione:
 Repeat
   s = fl.ReadLine()
' Raccoglie comunque le righe che iniziano con la direttiva "#include" di C:
   If s Begins "#include" Then t &= s & "\n\n"
   If s = "typedef struct snd_seq_event {" Then v = True
   If s Begins "#" Then Continue
   If v Then t &= Chr(10) & s
' Il ciclo dura sino a quando "v" non diventa vera e contemporaneamente "s" non diventa uguale a "} snd_seq_event_t;":
 Until (v = True) And (s = "} snd_seq_event_t;")

 Print t

 fl.Close

End