Programma con Xojo da zero: persistenza dei dati
Continuiamo ad avanzare nella creazione della nostra applicazione multipiattaforma con Xojo per la gestione delle spese personali; e in questo capitolo ci occuperemo di risolvere uno dei problemi più importanti che abbiamo avuto finora: salvare i dati inseriti su disco in modo da poterli recuperare successivamente ad ogni nuova esecuzione del programma.
Questo ci consente di presentare un’altra delle funzionalità che Xojo facilita notevolmente: accesso, lettura e scrittura a qualsiasi file che si trova sui nostri dispositivi di archiviazione.
Per questo useremo tre nuove classi realbasic Framework (cioè la serie di “strumenti” pronti per l’uso fornite dall’ambiente di sviluppo): FolderItem (https://docs.xojo.com/FolderItem), TextOutputStream (https: //docs.xojo.com/TextOutputStream) e TextInputStream (https://docs.xojo.com/TextInputStream).
Pensa a FolderItem come alla classe che, attraverso le sue proprietà e i suoi metodi, ci permette di accedere a qualsiasi file, sia esso già esistente o se si tratta di un nuovo file che vogliamo creare… così come cartelle e/o directory.
Infatti tramite le proprietà disponibili in questa classe possiamo effettuare controlli tanto comuni come verificare se il file esiste già nel percorso previsto, se è una cartella, la data di modifica o creazione, se può essere letto o scritto su la destinazione indicata dal percorso, modificare i suoi permessi… e un lungo eccetera.
D’altra parte, alcuni dei metodi disponibili nella classe FolderItem hanno il compito di semplificarci la copia del file di riferimento in una nuova posizione, aprirlo, eliminarlo, spostarlo… o creare nuove cartelle / directory nel percorso specificato.
Per quanto riguarda la coppia di classi TextInputStream / TextOutputStream, queste hanno il compito di lavorare con un file specifico (un’istanza o un oggetto di FolderItem), in modo che possiamo accedere al suo contenuto come se fosse un flusso di dati.
Tieni presente che entrambe le classi iniziano i loro nomi con la parola «Testo», il che significa che i dati a cui accedere verranno trattati come testo anziché come formato «binario».
Nel nostro caso è quello che vogliamo e per noi funziona perché tutte le informazioni che andremo a salvare e (successivamente) recuperare sono in formato testuale: nome della spesa, data di acquisto, importo, ecc.
In che modo un «flusso di dati» o «flusso» è diverso da un file? Pensa al file come al contenitore dei dati, mentre la classe incaricata di accedere ai dati memorizzati dal file agirebbe sul contenuto stesso.
Attraverso le sue proprietà e metodi è possibile spostarsi in una determinata posizione (in byte) all’interno del file, purché non superi la sua lunghezza, ovviamente. Puoi anche leggere il contenuto del file «testo» riga per riga, tutto contemporaneamente, o il frammento che desideri dalla posizione corrente alla lunghezza specificata.
Da parte sua, la classe che svolge le funzioni opposte è TextOutputStream. Con esso, puoi aprire un file (o crearlo, purché passi comunque un riferimento a un FolderItem) per scaricare il contenuto che desideri come testo su di esso: riga per riga, un certo frammento o tutto in una volta.
In pratica
Nello sviluppo della nostra applicazione di esempio utilizzeremo proprio queste tre classi per salvare sia le categorie che tutti gli elementi di acquisto che abbiamo introdotto.
In tutto il video ci concentriamo sui dettagli di come salvare queste informazioni e recuperarle in seguito utilizzando due file: uno incaricato di contenere il nome delle categorie e l’altro in cui si trovano le spese associate per ciascuna delle categorie.
È interessante perché mettiamo in pratica anche molto di ciò che abbiamo visto finora: variabili semplici, e anche raccolte di dati (Array e Dizionari); quindi è un buon momento per rinfrescare la conoscenza dei due capitoli precedenti… e anche per vedere un po’ più in profondità come usarli nella pratica.
Nome dell’app e altri dettagli
All’inizio del video possiamo anche vedere qualcosa di veramente importante durante la creazione di una qualsiasi delle nostre applicazioni: come indicare dall’IDE Xojo il nome che vogliamo dare alla nostra applicazione… e anche decidere per quale architettura vogliamo compilarla!
Sai già che, con Xojo, decidere se vuoi che la tua applicazione venga compilata per Mac basati su processori Intel, M1 o come applicazione Universal è semplice come selezionare l’opzione da un menu.
Twitter: @xojoes
Facebook: http://facebook.com/xojoes/
Scarica l’ultima versione da www.xojo.com
Risorse Xojo in spagnolo: https://docs.xojo.com/spanish