Raccogliere solo alcune righe all'interno di un file di testo

Da Gambas-it.org - Wikipedia.

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'struzione "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