Serialize mehrerer Versionen?



  • Hallo!
    Folgendes:
    Es existiert ein Programm, bisher in Version 2004. Mit der neuesten Version müssen ALLE alten Versionen geöffnet werden können! Nun brauche ich aber in der neuesten Version einige extra BOOLs etc. in der Datei. Da die vorherigen Versionen keine Version o.ä. abgespeichert haben kann ich auch nicht einfach iVersion z.b. ein"serializen"...wisst ihr was ich meine? Also es besteht keine Möglichkeit nachträglich den alten Versionen zu sagen, sie sollen in die Dateien ihre Version abspeichern! Ich habe es versucht indem ich beim Speichern ar.SetObjectSchema(2) mache und beim Laden oer ar.GetObjectSchema das Schema überprüfe! Leider wurde das gesettete Schema (2) nicht wieder ausgelesen, sondern blieb bei -1.

    Ist sehr DRINGEND!

    Danke

    Kevin



  • ich habe es ebenfalls ber VERSIONABLE_SCHEMA probiert. Leider funktioniert dies alles nicht...was mache ich falsch und hat das noch nie jemand von euch verwendet?



  • Setzte bei deiner neuen Version einfach etwas am Anfang was nicht in deiner alten Dateiversion auftaucht.

    Deine Struktur war z.B. {bool, bool, CString}. Das erste Byte der Datei ist also entweder eine 0 oder eine 1. In deiner neuen Dateiversion setzt du das erste Byte in der Datei auf z.B. ff. Wenn du die Datei öffnest liest du das erste Byte ein . Ist das Byte ff so ist es die neue Version - ansonsten die alte. Aber nicht vergessen in der neuen Version dann nun endlich eine Dateiversion mit zu integrieren. War aber in deiner alten Version das erste nicht ein bool sondern z.B. ein int dann musst du einfach eine größere Kennung nehmen bis zu dem ersten Wert wo du sicher Werte ausschließen kannst.

    /edit:
    Nachteil könnte aber sein das deine alte Programmversion Fehler meldet oder gar abschmiert wenn du die neue Dateiversion öffnen willst. Alternativ kannst du ja die Dateiendung ändern.



  • HI, genau so habe ich es gestern gelöst 🙂


Anmelden zum Antworten