Frage

Hat jemand läuft in Problemen Komponenten in eine Datei serialisiert und sie zurück, und zwar im Bereich Lesen, wo die Anbieter von Komponenten für die VCL-Komponenten aktualisiert. Zum Beispiel wird eine Datei mit DelphiX serialisiert und dann Jahre später lesen mit delphiY zurück. Haben die Serialisierungsformaten ändern und wenn ja, was getan werden kann, um zu verhindern Fehler in den componets Lesen beim Upgrade.

War es hilfreich?

Lösung

Das eingebaute in RTTI-basierte System für veröffentlichten Eigenschaften Serialisierung ist auf Änderungen in den Komponenten anfällig. Going vorwärts überschaubar, solange alte Eigenschaften in neuen Objekten gehalten werden. D. h Sie verlassen die Eigenschaft Schnittstelle wie es ist, aber den Inhalt wegwerfen, wenn Sie mögen. Rückwärts ist schlimmer -. Als eine neuere Version gespeichert Eigenschaft kann in älterer Version Last nicht geöffnet werden, und das wird ein Problem sein

Es gibt Komponenten / libs ( http://www.torry.net /quicksearchd.php?String=RTTI&Title=Yes ), die Serialisierung im XML-Format hinzufügen und diese ein wenig helfen können, wie Sie Inhalte überspringen wählen, können Sie es nicht wissen.

Sie müssen noch bewusst sein, wie Sie Ihre veröffentlichten Inhalte entwerfen und wahrscheinlich einen Weg zu „ignorieren, aber propagiert“ finden sollen Inhalte, die Ihre aktuelle Version nicht verstehen. Dies ermöglicht es Ihnen, eine Datei in einem neueren Format zu öffnen und zu ändern, während Sie versuchen, neuere Attribute zu halten, anstatt sie zu Strippen.

Andere Tipps

Formate defintely ändern, als Anbieter Funktionen, um ihre Komponenten hinzufügen. Serialisierung einfach Schleifen über alle veröffentlichten Eigenschaften und speichert sie in einem Stream. Als sie wieder gelesen werden, wobei jede der Eigenschaften, die aus dem Stream gelesen wird, wird zurück auf die Komponente eingestellt werden. Wenn die Eigenschaft nicht mehr existiert, haben Sie ein Problem. Ich glaube nicht, dass Sie etwas über, dass neben einigen grundlegenden Ausnahmebehandlung tun.

Der beste Weg, die Kompatibilität zu gewährleisten, ist Ihre eigene Serialisierung zu tun.

Danke für die Antwort. Ich habe versucht, benutzerdefinierte Serialisierung und die Vorteile der einzelnen Komponenten Serialisierungstechnik zu vermeiden, aber mit dem Mangel Opf irgendeine Weise zu „Patch“ ein Upgrade auf ein neue Komponente Format I benutzerdefinierte Serialisierung denke, die einzige Methode ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top