Italian [ Risolto ] Motodi per caricare una list

luciano deri

Active Member
Licensed User
Longtime User
Salve, nell'esempio seguente ci sono due metodi per caricare una list che credevo fossero equivalenti, invece il primo metodo non funziona e mi pare che sia un bel bug.
B4X:
Sub EsempioLista
    Dim list1 As List
    list1.Initialize
    Dim cols(05) As String
    cols(0) = "A"
    cols(1) = "B"
    cols(2) = "C"
    cols(3) = "D"
    cols(4) = "E"
    list1.Add(cols)
    ' da questo punto modificando il contenuto di cols mi cambia il contenuto della prima posizione di list1
    cols(0) = "F"
    cols(1) = "G"
    cols(2) = "H"
    cols(3) = "I"
    cols(4) = "L"
    list1.Add(cols)
    ' qui mi trovo list1(1) e list1(2) uguali
End Sub
Sub EsempioLista2
    Dim list1 As List
    list1.Initialize
    Dim cols(05) As String
    cols = Array As String ("A","B","C","D","E")
    list1.Add(cols)
    cols = Array As String ("F","G","H","I","l")
    list1.Add(cols)
    ' questo funziona bene
End Sub
Osservandolo con il debug sembra che il record appena inserito con List1.add resti connesso all'array di appoggio cols, quindi l'assegnamento successivo modifica il record corrente. L'univa differenza è il metodo con cui è riempito cols, ma fare
cols(0) = "A"
cols(1) = "B"
cols(2) = "C"
cols(3) = "D"
cols(4) = "E"
non è equivalente a
cols = Array As String ("A","B","C","D","E")
Grazie e distinti saluti.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
no no, non è un bug, è che nel primo caso hai riutilizzato l'array di stringhe (e quindi hai sostituito i valori esistenti), nel secondo caso ne hai ri-definito un altro (ma con lo stesso nome).
prova questo codice:
B4X:
Sub EsempioLista
Dim list1 As List
list1.Initialize
Dim cols(5) As String
cols(0) = "A"
cols(1) = "B"
cols(2) = "C"
cols(3) = "D"
cols(4) = "E"
list1.Add(cols)
Dim cols(5) As String
cols(1) = "G"
cols(2) = "H"
cols(3) = "I"
cols(4) = "L"
list1.Add(cols)
End Sub
 
Last edited:
Top