Domanda

Qualcuno ha riscontrato problemi nel serializzare i componenti in un file e rileggerli, in particolare nell'area in cui il fornitore del componente aggiorna i componenti VCL.Ad esempio un file serializzato con DelphiX e poi riletto anni dopo con delphiY.Cambiano i formati di serializzazione e, in tal caso, cosa si può fare per evitare errori di lettura dei componenti durante l'aggiornamento.

È stato utile?

Soluzione

Il sistema integrato basato su RTTI per la serializzazione delle proprietà pubblicate è vulnerabile alle modifiche nei componenti.Andare avanti è gestibile finché le vecchie proprietà vengono mantenute nei nuovi oggetti.Cioè.lasci l'interfaccia delle proprietà così com'è, ma puoi buttare via il contenuto se lo desideri.Andare indietro è peggio, poiché una proprietà salvata della versione più recente non può essere aperta durante il caricamento della versione precedente e questo sarà un problema.

Ci sono componenti/librerie (http://www.torry.net/quicksearchd.php?String=RTTI&Title=Yes) che può aggiungere la serializzazione in formato XML e questo può essere d'aiuto poiché puoi scegliere di saltare il contenuto che non conosci.

Devi comunque essere consapevole di come progetti i tuoi contenuti pubblicati e probabilmente dovresti trovare un modo per "ignorare ma propagare" i contenuti che la tua versione attuale non comprende.Ciò ti consentirà di aprire e modificare un file in un formato più recente tentando di mantenere gli attributi più recenti, invece di eliminarli.

Altri suggerimenti

I formati cambieranno sicuramente, poiché i fornitori aggiungeranno funzionalità ai loro componenti.La serializzazione esegue semplicemente il loop su tutte le proprietà pubblicate e le salva in un flusso.Quando vengono rilette, ciascuna delle proprietà lette dal flusso verrà reimpostata sul componente.Se la proprietà non esiste più, hai un problema.Non penso che tu possa fare nulla al riguardo oltre alla gestione delle eccezioni di base.

Il modo migliore per garantire la compatibilità è eseguire la propria serializzazione.

Grazie per la risposta.Stavo cercando di evitare la serializzazione personalizzata e di sfruttare la tecnica di serializzazione di ciascun componente, ma data la mancanza di un modo per "applicare patch" a un aggiornamento a un nuovo formato di componente, immagino che la serializzazione personalizzata sia l'unico metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top