CArchive - Wie sieht das Format dahinter aus?


  • Administrator

    Hallo zusammen,

    Ich muss ein paar Daten portieren, welche früher per CArchive in ein File geschrieben wurden. Daher sollte ich das Format von solchen Archiven wissen, bzw. wie sie genau aufgebaut sind. Ich weiss was für Daten in welcher Reihenfolge drinstehen. Daher fehlt mir nur noch jeweils das Format.

    Soweit ich weiss, leitet CArchive die Speicherung weiter an CObject , bzw. die davon abgeleitete Klasse. Das seh ich auch im Code, welcher die Daten in das File schreibt. Nur weiss ich nicht, was in CArchive selber zum Teil passiert und wie zum Beispiel ein CString oder CSize , usw. usf gespeichert werden.

    Bisher konnte ich schon mal ein paar Dinge per Hex Editor herausfinden, aber ob das immer so ist oder ob gewisse Dinge von Bedingungen abhängen, geht daraus natürlich nicht hervor. Bisher herausgefunden:
    - Big-Endian

    • CSize einfach 2x int -> 4 + 4 Bytes
    • CString 1 Byte für die Länge, danach der String (aber was ist wenn der CString längere Strings als 255 Zeichen gespeichert hat?)
    • int , double , float - 4, 8, 4 Bytes BE

    Gäbe es dazu vielleicht irgendwo eine Tabelle? MSDN? Gefunden habe ich nichts sinnvolles. Oder muss ich da bei jeder Klasse einzeln schauen gehen?

    Grüssli


  • Administrator

    Da ich das Zeug in .Net einlesen muss, habe ich hier die mehr oder weniger perfekten Artikel gefunden:
    http://www.codeproject.com/KB/cs/MFC_Serialization.aspx
    http://www.codeproject.com/KB/cs/MFC_Serialization2.aspx

    Aber die dürften auch für Leute interessant sein, welche nicht in .Net einlesen wollen.

    Grüssli


Anmelden zum Antworten