Serialization
Hello,
I have an MFC SDI program that uses a serialization for reading data, see
code snippet below.
My question to I need to close the CArchieve ar or not?
If there is something else that I have made stupid Please say so and how I
can make it better!
code snippets:
// -------------------------------------
BOOL CdbPinwareDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
gLog.LOG(10,_T("Enter OnOpenDocument"),eDebug);gLog.Write();
// clean up
gLog.LOG(10,_T("Before meDBSingleton Cleanup"),eDebug);gLog.Write();
meDBSingleton::Instance().m_dbPath = _T("");
meDBSingleton::Instance().m_dbName = _T("");
meDBSingleton::Instance().m_dbTable = _T("");
meDBSingleton::Instance().m_maskfile = _T("");
meDBSingleton::Instance().m_searchKeyName = _T("");
meDBSingleton::Instance().m_searchKeyCaption = _T("");
meDBSingleton::Instance().m_connectionList.RemoveAll();
gLog.LOG(11,_T("meDBSingleton Cleanup Done"),eDebug);gLog.Write();
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
gLog.LOG(11,_T("OnOpenDocument Done"),eDebug);gLog.Write();
return TRUE;
}
void CdbPinwareDoc::Serialize(CArchive& ar)
{
CString buf;
ConnectionData tmpConnection;
if (ar.IsStoring())
{
TRACE(_T("No access to storing\n"));
}
else
{
gLog.LOG(10,_T("Enter Serialize"),eDebug);gLog.Write();
ar.Flush();
CTextFileRead f(ar.GetFile());
f.ReadLine(buf);
buf = buf.Mid(buf.Find(_T("="))+1);
if(buf==DATA_VERSION)
{
gLog.LOG(10,_T("Buf==DATAVERSION"),eDebug);gLog.Write();
// database path
f.ReadLine(buf);
meDBSingleton::Instance().m_dbPath = buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("database path read"),eDebug);gLog.Write();
// database name
f.ReadLine(buf);
meDBSingleton::Instance().m_dbName = buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("database name read"),eDebug);gLog.Write();
// table
f.ReadLine(buf);
meDBSingleton::Instance().m_dbTable = buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("table read"),eDebug);gLog.Write();
// Mask
f.ReadLine(buf);
meDBSingleton::Instance().m_maskfile = buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("mask read"),eDebug);gLog.Write();
// SearchKeyName
f.ReadLine(buf);
meDBSingleton::Instance().m_searchKeyName =
buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("searchkeyname read"),eDebug);gLog.Write();
// SearchKeyCaption
f.ReadLine(buf);
meDBSingleton::Instance().m_searchKeyCaption =
buf.Mid(buf.Find(_T("="))+1);
gLog.LOG(11,_T("searchkeycaption read"),eDebug);gLog.Write();
// SeachKeyType
f.ReadLine(buf);
meDBSingleton::Instance().m_searchKeyType =
(BOOL)_ttoi(buf.Mid(buf.Find(_T("="))+1));
gLog.LOG(11,_T("searchkeytype read"),eDebug);gLog.Write();
// no Connections
f.ReadLine(buf);
int nConnections = _ttoi(buf.Mid(buf.Find(_T("="))+1));
gLog.LOG(11,_T("connections read"),eDebug);gLog.Write();
for(int i = 0;i<nConnections;i++)
{
// SearchKey
f.ReadLine(buf);
tmpConnection.m_searchkey = _ttoi(buf.Mid(buf.Find(_T("="))+1));
// Caption
f.ReadLine(buf);
tmpConnection.m_caption = buf.Mid(buf.Find(_T("="))+1);
// Column
f.ReadLine(buf);
tmpConnection.m_column = buf.Mid(buf.Find(_T("="))+1);
// Field
f.ReadLine(buf);
tmpConnection.m_field = buf.Mid(buf.Find(_T("="))+1);
// Type
f.ReadLine(buf);
tmpConnection.m_nType = _tstoi(buf.Mid(buf.Find(_T("="))+1));
// NoDec
f.ReadLine(buf);
tmpConnection.m_nodec = _tstoi(buf.Mid(buf.Find(_T("="))+1));
// add to list
meDBSingleton::Instance().m_connectionList.AddTail(tmpConnection);
}
f.Close();
// ar.Close();
}
else
{
CString msg;
msg.LoadString(IDS_WRONGFILEVERSION);
AfxMessageBox(msg);
}
gLog.LOG(11,_T("Serialize Done"),eDebug);gLog.Write();
}
}
// -------------------------------------------------
// Anders
--
English is not my first, or second, language
so anything strange, or insulting, is due to
the translation.
Please correct me so I may improve my English!