Newsgroup: it.comp.lang.visual-basic
Titolo: Edit dati su file

Per un'applicazione monoutente che permette di aprire, visualizzare e modificare dei documenti, qual è il modo più conveniente di gestire i dati su file, o comunque quali sono i pregi ed i difetti delle varie tecniche di seguito indicate?
 
1. Carico tutti i dati in RAM, quindi salvo i cambiamenti solo alla fine.
2. Carico tutti i dati in RAM, ma salvo le modifiche man mano.
3. Tengo i dati in RAM solo per il tempo che servono (quando l'utente li visualizza e/o modifica) e li scarico subito dopo, avendo così un continuo flusso di lettura e/o scrittura su file.
 
Il primo caso mi pare il più semplice da implementare per due motivi:
- i dati possono essere caricati in RAM entro una struttura ad oggetti che facilita la programmazione.
- i dati vengono letti e scritti su disco in un paio di passaggi.
Un problema che può diventare importante è la quantità di RAM necessaria, specie nei casi in cui si tratta di documenti di grandi dimensioni.
 
Il secondo caso, condivide il pregio di poter caricare i dati in una struttura ad oggetti, ma per quanto riguarda la scrittura dei dati su file, a meno che le modifiche non vadano sempre accodate al file, ogni piccolo cambiamento in un punto interno del file comporta diverse operazioni di lettura e scrittura su disco.


E il terzo caso cosa dice?
 
-- 
Greg

> E il terzo caso cosa dice?
 
Mi pare il peggiore. Non riesco ad avere una rappresentazione in memoria dei dati, e devo continuamente leggere e scrivere su disco.

 Mi pare il peggiore. Non riesco ad avere una rappresentazione in memoria dei dati, e devo continuamente leggere e scrivere su disco.
 
Qual è la tua opinione?


La mia opinione?
Hanno stamangianto, a speese dei tifosi, anche sul nuovos sito. Oppure 
sono incapaci
 
-- 
Greg


Io scrivo velcoe e poi guardo, non badare allì'ortografia
 
-- 
Greg

 Per un'applicazione monoutente che permette di aprire, visualizzare e modificare dei documenti, qual è il modo più conveniente di gestire i dati su file, o comunque quali sono i pregi ed i difetti delle varie tecniche di seguito indicate?
[...]
 
Così in senso astratto è difficile da dire... "documenti" cosa vuol dire? formati strutturati oppure grossi "blob" di byte? che tipo di operazioni prevedi di farci sopra?
 
Perchè se per esempio parlassimo di foto e filtri da applicare, per lo più non puoi prescindere da avere l'intera immagine non compressa in memoria, ma se parliamo di dati testuali/misti con una gerarchia strutturata, allora la cosa potrebbe cambiare
 
Altra considerazione: la "fine" dei cambiamenti hai modo di controllarla in base ad una serie di operazioni predeterminate da te, oppure semplicemente è indefinita e si finisce quando l'utente decide che ha finito?
 
Perchè, per esempio, questo cambia drasticamente l'opportunità di andare verso  opzione 1 e 2, dove la prima la escluderei categoricamente visto che un qualunque problema sul tuo software/altra guaio a caso sul PC potrebbe potenzialmente perdere tutto il lavoro fatto.
 
ecc... ecc...

 ecc... ecc...
 
 
Per quanto riguarda il salvataggio su file, ciò che mi lascia perplesso è che ogni volta che devo salvare le modifiche nel modo detto sopra, devo "disfare" il file per riscrivere una sua parte interna. I programmi commerciali fanno così? Oppure accodano in via provvisoria le modifiche, e poi compattano il file alla chiusura?


E vado cosi veloce che sbaglio pure nh :(
Scusami!
La mia opinione sul tuo caso è di salvare il file ad ogni modifica; è 
un solo utente, non sarà molta roba, qualsiasi cosa succeda, tu hai gia 
salvato
 
-- 
Greg

 Per quanto riguarda il salvataggio su file, ciò che mi lascia perplesso è che ogni volta che devo salvare le modifiche nel modo detto sopra, devo "disfare" il file per riscrivere una sua parte interna. I programmi commerciali fanno così? Oppure accodano in via provvisoria le modifiche, e poi compattano il file alla chiusura?
 
Anche qui, dipende dal formato specifico... però per esempio potresti lavorare su file temporaneo, e se anche il tuo documento è rappresentato da un solo file, potresti spacchettarlo in più file temporanei con le varie parti.
 
In questo modo salvi le modifiche i tuoi blocchi separatamente, man mano che lavorano, e poi fare l'operazione complessa di ricostruzione del file completo solo alla fine... tra l'altro così l'originale resta sempre intatto fintanto che è in lavorazione, che è anche una forma di sicurezza in più se vuoi, ma hai comunque qualcosa di persistente su hard disk a scanso di problemi


 
 
+1
 
Sostanzialmente Office fa così.
 
Nicola