#include "StdAfx.h" #include "akFileDB.h" CakFileDB::CakFileDB(void) { //m_mapData["aa"] = "123"; //m_mapData["bb"] = "321"; InitializeCriticalSection(&m_csAkFileDB); if(1)//test { EnterCriticalSection(&m_csAkFileDB); savefile("aaa.txt"); clear(); openfile("aaa.txt"); LeaveCriticalSection(&m_csAkFileDB); } } void CakFileDB::setWriteEnter() { EnterCriticalSection(&m_csAkFileDB); } void CakFileDB::setWriteRelease() { LeaveCriticalSection(&m_csAkFileDB); } CakFileDB::~CakFileDB(void) { DeleteCriticalSection(&m_csAkFileDB); } bool CakFileDB::openfile( char* filename ) { m_bFileOpen = FALSE; FILE* pf; if(pf = fopen(filename, "r")) { clear();//ÇöÀç º¸°üµ¥ÀÌÅÍ »èÁ¦ m_bFileOpen = TRUE; char buffer[1024]; char* pText; char strKey[1024]; char strVal[1024]; int i,j,nLen; while (1) { pText = fgets(buffer, 1024, pf); if(strlen(buffer) == 0 || pText == NULL) break; nLen = strlen(buffer); for(i=1; isecond).GetLength() == 0) continue; fprintf(pf, "%s=`%s`\n", ((CString)IterPos->first).GetBuffer(), ((CString)IterPos->second).GetBuffer()); }*/ for(int i=0; isecond).GetLength() == 0) continue; fprintf(pf, "%s=`%s`\n", ((CString)IterPos->first).GetBuffer(), ((CString)IterPos->second).GetBuffer()); } fclose(pf); } else { return false; } return true; } void CakFileDB::clear() { m_mapData.clear(); m_vecOrder.clear(); m_bFileOpen = FALSE; } int CakFileDB::deleteItem( char* strKey ) { if(strKey == NULL) return -1; mapIDVal::iterator finder; if ((finder = m_mapData.find(strKey)) != m_mapData.end()) { for(int i=0; i= nIndex) return -1; CString strKey = (CString)(m_vecOrder[nIndex])->first; m_mapData.erase( strKey ); m_vecOrder.erase(m_vecOrder.begin()+nIndex); } void CakFileDB::setItem( char* strKey, char* strVal ) { mapIDVal::_Pairib pib = m_mapData.insert(mapIDVal::value_type(strKey, strVal)); if (!pib.second) // ۰¡ Áߺ¹ÀÌ´Ù. { } else { m_vecOrder.push_back((mapIDValIt)pib.first); } } void CakFileDB::setItem( char* strKey, int nVal ) { CString strVal; strVal.Format("%d", nVal); setItem(strKey, strVal.GetBuffer()); } void CakFileDB::setItem( char* strKey, float fVal ) { CString strVal; strVal.Format("%d", fVal); setItem(strKey, strVal.GetBuffer()); } void CakFileDB::setItem( char* strKey, double dVal ) { CString strVal; strVal.Format("%d", dVal); setItem(strKey, strVal.GetBuffer()); } void CakFileDB::setItem( char* strKey, long nVal ) { CString strVal; strVal.Format("%d", nVal); setItem(strKey, strVal.GetBuffer()); } void CakFileDB::setItem( int nIndex, char* strKey, char* strVal ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); setItem(key.GetBuffer(0), strVal); } void CakFileDB::setItem( int nIndex, char* strKey, int nVal ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); setItem(key.GetBuffer(0), nVal); } void CakFileDB::setItem( int nIndex, char* strKey, float fVal ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); setItem(key.GetBuffer(0), fVal); } void CakFileDB::setItem( int nIndex, char* strKey, double dVal ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); setItem(key.GetBuffer(0), dVal); } char* CakFileDB::getItemPoint( char* strKey ) { mapIDVal::iterator itor = m_mapData.find(strKey); if(itor != m_mapData.end()) { return itor->second.GetBuffer(); } return NULL; } void CakFileDB::getItem( char* strKey, char* strVal, char* strDefaultVal /*= ""*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { strcpy(strVal, pStr); return; } strcpy(strVal, strDefaultVal); } void CakFileDB::getItem( char* strKey, CString* strVal, char* strDefaultVal /*= ""*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { *strVal = pStr; return; } *strVal = strDefaultVal; } void CakFileDB::getItem( char* strKey, int* nVal, int nDefaultVal /*= 0*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { *nVal = atoi(pStr); return; } *nVal = nDefaultVal; } void CakFileDB::getItem( char* strKey, float* fVal, float fDefaultVal /*= 0*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { *fVal = atof(pStr); return; } *fVal = fDefaultVal; } void CakFileDB::getItem( char* strKey, double* dVal, double dDefaultVal /*= 0*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { *dVal = atoi(pStr); return; } *dVal = dDefaultVal; } void CakFileDB::getItem( char* strKey, long* nVal, long nDefaultVal /*= 0*/ ) { char* pStr = NULL; if(pStr = getItemPoint(strKey)) { *nVal = atol(pStr); return; } *nVal = nDefaultVal; } void CakFileDB::getItem( int nIndex, char* strKey, CString* strVal, char* strDefaultVal /*= ""*/ ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); getItem(key.GetBuffer(0), strVal, strDefaultVal); } void CakFileDB::getItem( int nIndex, char* strKey, char* strVal, char* strDefaultVal /*= ""*/ ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); getItem(key.GetBuffer(0), strVal, strDefaultVal); } void CakFileDB::getItem( int nIndex, char* strKey, int* nVal, int nDefaultVal /*= 0*/ ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); getItem(key.GetBuffer(0), nVal, nDefaultVal); } void CakFileDB::getItem( int nIndex, char* strKey, float* fVal, float fDefaultVal /*= 0*/ ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); getItem(key.GetBuffer(0), fVal, fDefaultVal); } void CakFileDB::getItem( int nIndex, char* strKey, double* dVal, double dDefaultVal /*= 0*/ ) { CString key; key.Format("%s%s%d", strKey, ITEMSEP, nIndex); getItem(key.GetBuffer(0), dVal, dDefaultVal); } void CakFileDB::setItemClear( char* strKey ) { mapIDValIt pos; CString findkey; findkey.Format("%s%s", strKey, ITEMSEP); for(pos = m_mapData.begin(); pos != m_mapData.end();) { if(!strncmp(findkey.GetBuffer(), ((CString)pos->first).GetBuffer(), findkey.GetLength())) { m_mapData.erase(pos++); } else { ++pos; } } } int CakFileDB::getItemNum( char* strKey ) { mapIDValIt pos; CString findkey; findkey.Format("%s%s", strKey, ITEMSEP); int nCount=0; for(pos = m_mapData.begin(); pos != m_mapData.end(); pos++) { if(!strncmp(findkey.GetBuffer(), ((CString)pos->first).GetBuffer(), findkey.GetLength())) { nCount++; } } return nCount; } char* CakFileDB::getItemPoint( int nIndex, char* strKey ) { CString findkey; findkey.Format("%s%s%d", strKey, ITEMSEP, nIndex); return getItemPoint(findkey.GetBuffer(0)); }