Italian Gestione indici array

ivanomonti

Expert
Licensed User
Longtime User
ciao ho un array dinamico che viene creato al volo al primo startup

se fosse vb o rs scriverei cosi

dim myarray() as integer = split(",","1,2,3,4,5,6,7,8,9,0)

per leggere la sua dimensione

dim i as integer = myarray.lenght
dim i as integer = myarray.ubound

in B4A e abbastanza simile, ma funge di M.

dim i as integer = myarray.lenght

se fosse vuota array in VB o RS (realStudio) avrei indice -1, in B4A non riesco a controllare questa cosa, perchè se scrivo;

B4X:
   If FileSettingApp.GetString("chiave0") = Null Then
      FileSettingApp.SetString("chiave0","False,False,False,False,False,False") ' chiave di apertura app
      FileSettingApp.SetString("chiave1","Address") ' casa
      FileSettingApp.SetString("chiave2","Phone") ' chiama
      FileSettingApp.SetString("chiave3","SMS") ' sms
      FileSettingApp.SetString("chiave4","Number of rescue")   ' 118
   End If

non viene minimamente cagata, primo e sempre a 0 invece di null poi non anche se metto controllo di tipo null se ne sbatte.

Come posso risolvere.
 

ivanomonti

Expert
Licensed User
Longtime User
Scusa Ivano,
sai che non ho capito il tuo problema ?
Comunque non ti trovi bene con le liste ?

e molto semplice ho una chiave che contiene lo status dei flag

esempio "false,false,true,false,true,true"

con uno split popolo array

If FileSettingApp.GetString("chiave0") <> "" OR FileSettingApp.GetString("chiave0") <> Null Then

Dim Result() As String
Result = Regex.Split(",",FileSettingApp.GetString("chiave0"))

If Result.Length > 0 Then
If Result(0) = True Then CheckBox1.Checked = True
End If

If Result.Length > 1 Then
If Result(1) = True Then CheckBox2.Checked = True
End If

If Result.Length > 2 Then
If Result(2) = True Then CheckBox3.Checked = True
End If

If Result.Length > 3 Then
If Result(3) = True Then CheckBox4.Checked = True
End If

If Result.Length > 4 Then
If Result(4) = True Then CheckBox5.Checked = True
End If

If Result.Length > 5 Then
If Result(5) = True Then CheckBox6.Checked = True
End If

End if

Ma quando faccio lenght se il valore e null mi da sempre 0 e quindi mi crea casini, io dico se null e null se 0 mi dai -1, se no mi dici quanto e lungho sto array.

Insomma array qui e da sistemare, non funziona come dovrebbe.
 

arenaluigi

Well-Known Member
Licensed User
Longtime User
Ivano,
intanto ti consiglio di usare le liste.
Passiamo agli array, fai attenzione che se tu scrivi:
B4X:
 myarray=Regex.Split(",","1,2,3,4,5,6,7,8,9,0")
 rint=myarray.Length
rint in questo caso è uguale a 10

ma se tu scrivi:
B4X:
 myarray=Regex.Split(";","1,2,3,4,5,6,7,8,9,0")
 rint=myarray.Length
rint è uguale ad 1 , anche se non c sono dei ; nel testo da splittare, per lui l'array avrà la posizione zero con questo valore "1,2,3,4,5,6,7,8,9,0".

Se invece dichiari l'array ma non lo usi, allora si che la lenght dell'array ti torna zero.
Spero che ti sia stato d'aiuto, altrimenti chiedi ancora.
Non credo che ti torni null un array.
 

ivanomonti

Expert
Licensed User
Longtime User
Ivano,
intanto ti consiglio di usare le liste.
Passiamo agli array, fai attenzione che se tu scrivi:
B4X:
 myarray=Regex.Split(",","1,2,3,4,5,6,7,8,9,0")
 rint=myarray.Length
rint in questo caso è uguale a 10

ma se tu scrivi:
B4X:
 myarray=Regex.Split(";","1,2,3,4,5,6,7,8,9,0")
 rint=myarray.Length
rint è uguale ad 1 , anche se non c sono dei ; nel testo da splittare, per lui l'array avrà la posizione zero con questo valore "1,2,3,4,5,6,7,8,9,0".

Se invece dichiari l'array ma non lo usi, allora si che la lenght dell'array ti torna zero.
Spero che ti sia stato d'aiuto, altrimenti chiedi ancora.
Non credo che ti torni null un array.

Chiarissimo, in effetti uso la prima ma dico ache array qui e poco pulito ... poi vedo se riesco a trasferire nelle liste, altra cosa, una parte di errori era mia con il copia incolla e modifica dimentico sempre di fare i giusti cambiamenti :)
 
Top