001: /////////////////////////////////////////////////////////////////////////////

002: //Projectname         : 

003: //Filename                : UKIniAccess.cpp 

004: //Classname                : CUKPuzzleCore

005: //Author                : Ulrich Kraemer [uk]

006: //Date                        : 04.04.2003

007: //Changes                : 

008: //////////////////////////////////////////////////////////////////////////////

009: 
010: #include "stdafx.h"
011: #include "UKIniAccess.h"
012: 
013: CUKIniAccess::CUKIniAccess(LPCTSTR strFileName)
014: {
015:         ASSERT(strFileName);
016:         m_strFileName=strFileName;
017: }
018: 
019: CUKIniAccess::~CUKIniAccess()
020: {}
021: 
022: CUKIniAccess::Init(LPCTSTR strFileName)
023: {
024:         m_strFileName=strFileName;
025: }
026: 
027: //Common methodes

028: BOOL CUKIniAccess::ReadValue(LPCTSTR szSection,LPCTSTR szKey,int* pValue)
029: {
030:         if (m_strFileName=="")
031:                 return FALSE;
032: 
033:         ASSERT(pValue);
034: 
035:         CString str;
036:         if (!ReadValue(szSection,szKey,str))
037:                 return FALSE;
038: 
039:         sscanf(str,"%i",pValue);
040: 
041:         return TRUE;
042: }
043: 
044: BOOL CUKIniAccess::ReadValue(LPCTSTR szSection,LPCTSTR szKey,long* pValue)
045: {
046:         if (m_strFileName=="")
047:                 return FALSE;
048: 
049:         ASSERT(pValue);
050: 
051:         CString str;
052:         if (!ReadValue(szSection,szKey,str))
053:                 return FALSE;
054: 
055:         sscanf(str,"%i",pValue);
056: 
057:         return TRUE;
058: }
059: 
060: BOOL CUKIniAccess::ReadValue(LPCTSTR szSection,LPCTSTR szKey,CString& rValue)
061: {
062:         if (m_strFileName=="")
063:                 return FALSE;
064: 
065:         TCHAR sz[1024];
066: 
067:         DWORD nValue = GetPrivateProfileString(szSection,szKey,"",sz,1024,m_strFileName);
068:         if (nValue<=0)//empty or invalid key

069:         {
070: #ifdef _DEBUG
071:                 static int nErrorString=0;
072:                 CString str;str.Format("%03d %s",++nErrorString,szSection);
073:                 WritePrivateProfileString("SectionKey_NotFound",str,szKey,m_strFileName);
074: #endif

075:                 return FALSE;
076:         }
077: 
078:         if (nValue>=1023)
079:                 sz[1023]='\0';
080: 
081:         rValue=sz;
082: 
083:         return TRUE;
084: }
085: 
086: BOOL CUKIniAccess::ReadValue(LPCTSTR szSection,LPCTSTR szKey,CLongArray& rValue)
087: {
088:         if (m_strFileName=="")
089:                 return FALSE;
090: 
091:         CString str;
092:         if (!ReadValue(szSection,szKey,str))
093:                 return FALSE;
094: 
095:         TCHAR *psz=str.GetBuffer(20);
096:         TCHAR *psz2=psz;
097: 
098:         rValue.RemoveAll();
099: 
100:         while (psz2)
101:         {
102:                 psz2=strchr(psz,',');
103:                 if (psz2)
104:                         *psz2='\0';
105: 
106:                 long nVal;
107:                 sscanf(psz,"%i",&nVal);
108:                 rValue.Add(nVal);
109: 
110:                 psz=psz2+1;
111:         }
112: 
113:         str.ReleaseBuffer();
114: 
115:         return TRUE;
116: }
117: