Public Class Form1 Dim insieme As ArrayList Dim matrice As String() Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load insieme = New ArrayList insieme.Add("gongolo") insieme.Add("mammolo") insieme.Add("pisolo") ReDim matrice(insieme.Count) insieme.CopyTo(matrice) Debug.Print(matrice(0) & " " & matrice(1) & " " & matrice(2)) End Sub End Class
gongolo mammolo pisoloBene. Con questo codice ho trascritto il valore di un ArrayList in un array di stringhe.
Adesso il codice che anzichè immettere manualmente gli elementi in un ArrayList li prende da un file.
Creo il file settenani.txt
gongolo pisolo mammolo eolo dotto brontolo cuccioloE adesso lo "prendo" con l'istruzione FileOpen, trascrivendo ogni linea del file in una variabile stringa e apponendolo all'ArrayList, quindi ridimensiono un array di stringhe alla stessa lunghezza dell'ArrayList e vi trascrivo i valori di questo:
Public Class Form1 Dim insieme As New ArrayList Dim matrice As String() Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim str As String = String.Empty Dim n As Integer = 1 FileOpen(1, "C:\Users\Antonello\Desktop\settenani.txt", OpenMode.Input) Do Until EOF(1) str = LineInput(1) insieme.Add(str) Loop ReDim matrice(insieme.Count) insieme.CopyTo(matrice) For Each elemento In matrice Debug.Print(elemento) Next End Sub End ClassEcco il risultato nella finestra di debug, dove il programma dice di stampare gli elementi della matrice di stringhe:
gongolo pisolo mammolo eolo dotto brontolo cuccioloDunque l'aver preso le linee del file di testo, l'averle messe in un ArrayList e quindi trascritte in un array di stringhe funziona.
Si potrebbe chiedersi perchè non mettere direttamente tutto in un array di stringhe: il problema è che a ogni mutamento di dimensioni di un array questo viene ritrascritto di sana pianta in un'altra locazione della memoria, e l'operazione è poco efficiente.
Nessun commento:
Posta un commento