Question

Quelqu'un a-t-il rencontré des problèmes pour sérialiser des composants dans un fichier et les relire, en particulier dans la zone où le fournisseur de composants met à niveau les composants VCL? Par exemple, un fichier sérialisé avec DelphiX, puis lu des années plus tard avec delphiY. Les formats de sérialisation changent-ils et, le cas échéant, que faire pour éviter les erreurs de lecture dans les composants lors de la mise à niveau.

Était-ce utile?

La solution

Le système RTTI intégré pour la sérialisation des propriétés publiées est vulnérable aux modifications des composants. Aller de l'avant est gérable tant que les anciennes propriétés sont conservées dans de nouveaux objets. C'est à dire. vous laissez l'interface de propriété telle quelle, mais vous pouvez en jeter le contenu si vous le souhaitez. Revenir en arrière est pire: une propriété sauvegardée dans une version plus récente ne peut pas être ouverte avec une version plus ancienne, ce qui posera problème.

Il existe des composants / libs ( http://www.torry.net /quicksearchd.php?String=RTTI&Title=Yes ) pouvant ajouter une sérialisation au format XML, ce qui peut aider un peu, car vous pouvez choisir d'ignorer le contenu que vous ne connaissez pas.

Vous devez toujours être conscient de la façon dont vous concevez votre contenu publié et devez probablement trouver le moyen de "ignorer mais de propager". contenu que votre version actuelle ne comprend pas. Cela vous permettra d’ouvrir et de modifier un fichier dans un format plus récent tout en essayant de conserver les attributs les plus récents au lieu de les supprimer.

Autres conseils

Les formats changeront de manière définitive, car les fournisseurs ajouteront des fonctionnalités à leurs composants. La sérialisation parcourt simplement toutes les propriétés publiées et les enregistre dans un flux. Lorsqu'elles sont relues, chacune des propriétés lues dans le flux sera redéfinie sur le composant. Si la propriété n'existe plus, vous avez un problème. Je ne pense pas que vous puissiez faire quoi que ce soit à part une gestion de base des exceptions.

Le meilleur moyen de garantir la compatibilité est de faire votre propre sérialisation.

Merci pour la réponse. J'essayais d'éviter la sérialisation personnalisée et de tirer parti de la technique de sérialisation de chaque composant, mais en l'absence de toute possibilité de "correctif". une mise à niveau vers un nouveau format de composant Je suppose que la sérialisation personnalisée est la seule méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top