Devo creaami un app che mantenga i dati il giusto tempo che l'app sia attiva.
Con VB6 avrei fatto semplicemente un array multidimensionale, ma con B4A è un sistema un pò ostico (almeno dagli esempi che ho trovato in giro), fare la stessa cosa con SQL Lite mi sembra tutto sprecato.
Qualcuno mi può fare un esempio di array multidimensionale ...
L'app come ovvio deve:
- Inserire dati (almeno 2 dimensioni)
- Leggere dati
Devo dire che non li ho mai usati con B4A ma suppongo che siano la stessa cosa. Tranne per il fatto che non puoi ridimensionarli a runtime senza perderne il contenuto (in VB.Net si può, con VB6... non mi ricordo ).
Cosa c'è di ostico?
Altrimenti puoi fare in mille modi diversi:
1) puoi usare un array monodimensionale ma caricarci dati di un Tipo creato da te:
B4X:
Sub Process_Globals
Type tCliente(ID As Int, Nominativo As String)
Private Clienti() As tCliente
Qui il problema è che gli oggetti di tipo tCliente dovranno essere inizializzati, appunto come tutti gli oggetti.
2) Usare una Map:
B4X:
Sub Process_Globals
Private mapClienti As Map
' da qualche parte...
mapClienti.Initialize
mapClienti.Put(1, "Osvaldo")
mapClienti.Put(2, "Caterina")
Log(mapClienti.Get(1))
Le Map hanno un bel po' di caratteristiche speciali utilissime.
LucaMS ...
Gli oggetti, soprattutto i metodi,su B4A ancora mi sono difficili da comprendere ...
Vero è che ho anche pochissimo tempo di applicarmi.
L'ultimo programma, risale a quando mi hai aiutato per il TTS, ecc. ecc. ... quindi 6 mesi fa. E solo ieri ho avuto qualche minuto di tempo per buttar giù due righe impantanandomi con l'array multidimensionale!
Mi sa che utilizzerò l'array monodimensionale ...
grazie ... ci sentiamo al prossimo intoppo ... diciamo fra qualche ora
Dim Clienti(10) As tCliente
For i = 0 to Clienti.Length - 1
Clienti(i).Initialize
Clienti(i).ID = i
Clienti(i).Nominativo = "Nome #" & i
Next
Però, pensandoci un po' di più, è difficile usarlo come un Array bidimensionale.
Come fai ad ottenere MioArray(3,4)? Non puoi; nemmeno con le Map, anche se hanno più metodi per ricavare dati.
Comunque, gli Array come MioArray(3,4) non danno problemi, eh.
Non mi pare ci siano differenze, rispetto a VB6 (anche se me lo sono dimenticato!).
Al limite potrebbe esserci la base, che in B4A è sicuramente 0 e forse in VB6 era 1; cioè, per avere una matrice 5x5, in B4A la dichiari con:
Dim arrMatrice(5, 5) As String (o qualunque altro tipo)
ma gli elementi vanno da (0,0) a (4,4)
mentre, FORSE, in VB6 era da (1,1) a (5,5), pur essendo dichiarata nello stesso modo.
se vuoi simulare in memoria una tabella SQLlite la cosa più semplice è una lista di mappe.
La mappa (Map in B4A) ti permette praticamente di simulare un record, dove appunto memorizzi dei dati sulla Map dandogli anche il nome del campo, e poi aggiungi questa Map ad una lista (List in B4A) e quindi avrai una serie di record
Per maggiori dettagli chiedi pure, ma nel frattempo leggiti il manuale dove spiega le Map e le List
se vuoi simulare in memoria una tabella SQLlite la cosa più semplice è una lista di mappe.
La mappa (Map in B4A) ti permette praticamente di simulare un record, dove appunto memorizzi dei dati sulla Map dandogli anche il nome del campo, e poi aggiungi questa Map ad una lista (List in B4A) e quindi avrai una serie di record
Per maggiori dettagli chiedi pure, ma nel frattempo leggiti il manuale dove spiega le Map e le List