Newsgroup: it.comp.lang.visual-basic
Titolo: Albero non binario in un file di testo

Ciao ragazzi,
la mia applicazione ha una struttura dati formata ad albero non binario.
In pratica, l'utente può creare delle mappe, sottomappe, ecc. ecc. e in
ogni mappa (o sottomappa) può creare uno o più oggetti.
In pratica è come un filesystem, le cartelle sono le mappe e gli oggetti
sono i file.
Ovviamente ogni mappa o oggetto ha certe proprietà.
Ora, io devo salvare questi dati possibilmente in file di testo, magari un
file .ini e caricarli all'avvio. Secondo voi qual è la struttura migliore
da dare al file di configurazione?
Avevo anche pensato di creare per ogni mappa una cartella e in ogni cartella
inserire un file map.ini per quella mappa e obj1.ini, obj2.ini ecc. ecc. per
i vari oggetti.
Secondo voi è decente come soluzione? Tenete presente che in ogni .ini ci
saranno
al massimo una decina di righe e che l'utente può creare al massimo una
trentina
di mappe/oggetti (cartelle/file). Può valere la pena "appesantire" il file
system
in questo modo?

 da dare al file di configurazione?
L'ideale sarebbe un XML, ma non so se ne vale la pena.
Non ricordo dove, ma avevo trovato un paio di routine per
salvare e ricaricare i dati di una TreeView in un file INI;
dovrebbero essere proprio quello che ti serve.
Prova a guglare un po'... scrivo un link a occhio:
http://www.google.it/search?q=routine+save+data+treeview
Erano probabilmente su PSC o su MSVP, forse DEVX.
Bye, G.
--
Le risposte alle tue domande sono sul Sito Comune
di questo NewsGroup: 
http://it-lang-vb.net/
... e nell'help in linea !

 wrote in message
news:HWKg9.12263$my3.2...@twister2.libero.it...

Eviterei di usare la soluzione basata sulla struttura 'a directory' (non è
nuova e sarebbe allora preferibile qualcosa come un FileDocument - o
comunque un unico file nel quale scrivere, anche sequenzialmente, i dati dei
singoli oggetti - 
p.es
., se usi una classe per ogni oggetto della struttura,
potresti implementare le funzioni Load/Save per ciascuna e scrivere in un
file gli oggetti nell'ordine di presentazione nell'albero, oppure potresti
usare la propertybag fornita da vb6 alle classi pubbliche e poi salvare il
pacchetto in un file, stessa tecnica più o meno). Una struttura basata sulle
directory presenta notevoli svantaggi e soprattutto può essere messa in
crisi da azioni dell'utente (
p.es
. la creazione di directory).
Probabilmente la soluzione più ovvia (e anche più semplice, se disponi di
qualche tool) consiste nell'usare XML, che normalmente si usa per strutture
gerarchiche senza grosse pretese (potresti usare MSXML, ma ci sono ottimi
tool di terze parti). Se però la struttura è molto ampia e/o dev'essere
oggetto di ricerche, load selettivi etc., io penso che sia il caso di
utilizzare una struttutura più pesante e ricca, cioè un database organizzato
gerarchicamente. Rispetto a XML il database ti consente di accedere
velocemente a qualsiasi sottoinsieme, di eseguire ricerche, di caricare
record in base ad attributi (
p.es
. potresti avere la necessità di caricare
solo gli oggetti per una determinata lingua o gruppo di utenza). Rispetto al
file system, un db ti consente di avere istanze omonime (ovviamente non puoi
avere file omonimi nella stessa directory e, se è per questo, neppure chiavi
duplicate nel registry, mentre puoi avere record con lo stesso valore nel
campo "Name"), ricerche veloci e le altre funzionalità viste prima. Insomma,
costa unpo' di più, ma rende molto di più. Ripeto, dipende da quello che
devi farci.
--
rumplestilskin

 qualche tool) consiste nell'usare XML,
Noooo, lasciamo stare l'XML.

 Erano probabilmente su PSC o su MSVP, forse DEVX.
Ecco, già è meglio.


Mi spiace ma per quello che hai in mente
tu mi sembra che sia proprio la cosa
migliore,
poi dipende dal programma che stai facendo.
Se č un programma che deve durare nel tempo,
con XML lo puoi fare piů robusto, inoltre
considera che essendo i file XML puoi
visualizzarli
con Explorer molto facilmente.
www.programmiliberi.it/manuali/web/xml.html