我想讀取/打開一個文件,該文件已經在Visual Studio 2013中創建的C++程序中用VC++ 6編譯序列化,但某些屬性/值未被讀取或以某種方式失蹤。從VC6到Visual Studio 2010的C++序列化up
請幫我理解這兩個版本有什麼不同,以及我如何才能解決它。
它使用的CArchive如下存儲:
void CCubeShelf::Serialize(CArchive &ar,BOOL bChildren, int iVersion)
{
if(ar.IsStoring())
{
m_dwProperties |= CSHELF_MERCH | CSHELF_MERCH_DEPTH;
ar << m_dwProperties;
ar << m_iShelfNum;
ar << m_fDividerWidth;
ar << m_fDividerSpacing;
ar << m_fGrillHeight;
ar << m_crGrillColor;
ar << m_fMercHeight;
ar << m_fMerchDepth;
ar << m_csFrontPath;
ar << m_csLeftPath;
ar << m_csTopPath;
}
else
{
ar >> m_dwProperties;
ar >> m_iShelfNum;
ar >> m_fDividerWidth;
ar >> m_fDividerSpacing;
ar >> m_fGrillHeight;
ar >> m_crGrillColor;
if(m_dwProperties & CSHELF_MERCH) ar >> m_fMercHeight;
if(m_dwProperties & CSHELF_MERCH_DEPTH)
{
ar >> m_fMerchDepth;
ar >> m_csFrontPath;
ar >> m_csLeftPath;
ar >> m_csTopPath;
}
}
CCube::Serialize(ar,bChildren,iVersion);
}
這完全取決於如何* *數據連載。你必須告訴我們更多關於這一點的信息。 – Angew
也許你會在你的代碼的其他地方序列化CTime對象。在VS6中CTime只有4個字節,但從CT200的VS2003開始,長度爲8個字節,所以如果你用先前用VS6序列化過的VS2013反序列化一個CTime對象,你將遇到麻煩。 –
不,不幸的是不是問題。我可以檢查其他課程嗎? – Jak