Guida al Visual Basic .NET
Capitolo 63° - Scrivere un INI Reader - Parte II
Dopo aver spiegato e posizionato i vari controlli con le proprietà adatte, si deve stendere il codice che permette al programma di leggere i file e visualizarli correttamente. Ecco il sorgente commentato: Class Form1 Private Sub ReadFile(ByVal File As String) 'Lo stream da cui leggere il file Dim Reader As New IO.StreamReader(File) 'Una stringa che rappresenta ogni singola riga del file Dim Line As String 'L'indice associato al numero di campi letti. Dato che ogni 'campo costituirà una radice del grafico, bisogna sapere da 'dove far derivare i relativi valori. 'Questa variabile è opzionale, in quanto è possibile usare 'la proprietà trwIni.Nodes.Count-1, poichè si aggiungono 'valori sempre soltanto all'ultimo campo aperto Dim FieldCount As Int16 = -1 'Imposta il testo della label di stato lblStatus.Text = "Apertura del file in corso..." 'Finchè non si raggiunge la fine del file si continua 'a leggere While Not Reader.EndOfStream 'Leggiamo una linea di file (S) Line = Reader.ReadLine 'Se la linea è diversa da una riga vuota If Line <> Nothing Then 'Se la linea inizia per "[" (significa che è 'un campo) If Line.StartsWith("[") Then 'Si aumenta FieldCount, che indica quanti campi 'si sono già letti (in base 0) FieldCount += 1 'Rimuove il primo carattere, ossia "[" Line = Line.Remove(0, 1) 'Rimuove dalla linea l'ultimo carattere, 'ossia "]" Line = Line.Remove(Line.Length - 1, 1) 'Aggiunge una radice alla TreeView trwIni.Nodes.Add(Line) Else 'Altrimenti, se la linea non inzia per ";", 'ossia non è un commento If Not Line.StartsWith(";") Then 'Aggiunge la linea come sotto-nodo 'dell'ultimo campo inserito. La linea 'conterrà il valore in forma ' [nome]=[contenuto] 'Attenzione! Possono esserci commenti in 'riga, quindi si deve prima controllare 'di eliminarli 'Se l'indice del carattere ";" nella riga 'è positivo... If Line.IndexOf(";") > 0 Then 'Rimuove tutto quello che viene dopo 'il commento Line = Line.Remove(Line.IndexOf(";")) End If trwIni.Nodes(FieldCount).Nodes.Add(Line) End If End If End If End While 'Chiude il file Reader.Close() lblStatus.Text = "File aperto" End Sub Private Sub strOpen_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles strOpen.Click 'Ecco un esempio di OpenFileDialog da codice Dim FOpen As New OpenFileDialog FOpen.Filter = "Impostazioni di configurazione|*.ini" If FOpen.ShowDialog = Windows.Forms.DialogResult.OK Then ReadFile(FOpen.FileName) End If End Sub Private Sub strExit_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles strExit.Click 'Esce dal programma, chiudendo il form corrente Me.Close() End Sub Private Sub strClearList_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles strClearList.Click 'Mostra un messaggio di conferma prima di procedere If MessageBox.Show("Eliminare tutti gli elementi dela lista?", _ "INI Reader", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _ Windows.Forms.DialogResult.No Then 'Se si risponde di no, esce dalla procedura Exit Sub End If 'Elimina tutti i nodi trwIni.Nodes.Clear() End Sub End ClassIl codice degli eventi è molto semplice, mentre più interessante è quello della procedura ReadFile. Per avere una panoramica delle operazioni sulle stringhe usate, vedere capitolo relativo. Per quanto riguarda la logica del sorgente, ecco una breve spiegazione: viene letto il file riga per riga e, sulla base delle condizioni che si incontrano man mano, vengono eseguite istruzioni diverse:
Ed ecco uno screenshot di come potreste farlo diventare:
C#, TypeScript, java, php, EcmaScript (JavaScript), Spring, Hibernate, React, SASS/LESS, jade, python, scikit, node.js, redux, postgres, keras, kubernetes, docker, hexo, etc...
|