1 引言
Visual C++ 6.0語言開發環境在MFC中以CArchive類為中心提供輸入輸出的串行化和數據版本控制功能。一般來說,隨著軟件的升級,對應的輸入輸出也會發生改變,如何保證多個版本的軟件與多種輸入輸出數據之間的親和性成為問題。比如說,當用戶使用1.0版的軟件,而提供的輸入卻是2.0版軟件的輸出,結果會如何呢?同樣2.0版的軟件如何處理1.0版生成的數據呢?
的確,用戶可以定義一套自己的文件格式為上述因版本不同造成的造成的麻煩提供解決方案,許多軟件都是這么干,但如果你所編制的軟件規模很小,功能單一,對數據格式并不在意(當然要保證輸入輸出正確),那么花力氣指定自己的數據文件格式似乎過于繁瑣。使用CArchive可以簡化這類軟件的編制。
2 CArchive的版本控制方式
當你使用DECLARE_SERIAL和IMPLEMENT_SERAIL宏時,你就在你的類中聲明并定義了一個CRuntimeClass類的靜態結構成員,該結構中的m_wSchema可以記錄你指定的版本號。注意雖然按照命名約定m_wSchema似乎是個WORD,但實際它是個UINT。當串行化輸出時,類信息(即類名和版本號的低字,高字是標志)被寫入數據文件,而串行化輸入時CArchive::ReadClass()和CArchive::ReadObject()根據這些信息以及后面的對象數據重建對象,返回對象指針。這一切均在類似pObject<
文章來源于領測軟件測試網 http://www.kjueaiud.com/