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.

Come esempio prederemo dal file header /alsa/seq_event.h soltanto le righe appartenenti della dichiarazione della 'Struttura "snd_seq_event", escludendo quelle che in gnerale iniziano con il carattere "#", fatta eccezione per quelle che inziano con "#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:
  Do
    s = fl.ReadLine()
' Raccoglie comunque le righe che iniziano con "#include":
    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;":
  Loop Until (v = True) And (s = "} snd_seq_event_t;")
 
  Print t

  fl.Close

End