Code: Select all
// Pack.h
CMap<CString,LPCTSTR,CStringArray*,CStringArray*> m_mapType;
Code: Select all
void CPack::SomeFunction()
{
CFile file;
CString sFileName;
::GetModuleFileName(NULL,sFileName.GetBuffer(_MAX_PATH),_MAX_PATH);
sFileName.ReleaseBuffer();
sFileName = sFileName.Left(sFileName.ReverseFind('\\') + 1);
sFileName += _T("test.xyz");
CString sTemp = _T("test value");
CStringArray* psaTest = new CStringArray;
psaTest->Add(sTemp);
sTemp = _T("test value 2");
psaTest->Add(sTemp);
m_mapType[_T("index")] = psaTest;
if(! file.Open(sFileName,CFile::modeCreate | CFile::modeWrite))
{
AfxMessageBox("can't open file for writing");
return;
}
CArchive ar(&file,CArchive::store);
m_mapType.Serialize(ar);
ar.Close();
file.Close();
psaTest->RemoveAll();
delete psaTest;
/// read /////
if(! file.Open(sFileName,CFile::modeRead))
{
AfxMessageBox("can't open file for reading");
return;
}
CArchive ar2(&file,CArchive::load);
m_mapType.Serialize(ar2);
TRACE("%d\n",m_mapType.GetCount()); // result 1
}
Am incercat asa :
Code: Select all
CStringArray* psaRes = new CStringArray;
if(m_mapType.Lookup(_T("index"),psaRes))AfxMessageBox("Found index");
else AfxMessageBox("Not found");
psaRes->RemoveAll();
delete psaRes;
Orice ajutor este binevenit . Multumesc anticipat.