12 #error not support "ExInifileAccessor"
53 enum { E_BufferSize = 65536 };
59 static EKind ms_CheckKind(LPCTSTR lpsz)
61 if ( lpsz[0] !=
'_' || lpsz[2] !=
'_' )
76 return static_cast<EKind>(lpsz[1]);
84 static CStr ms_ToWritingStr(LPCTSTR lpsz)
93 s.
Replace(_T(
"\\"), _T(
"\\\\"));
107 static CStr ms_ToOriginalStr(LPCTSTR lpsz)
111 s.
Replace(_T(
"\\n"), _T(
"\n"));
112 s.
Replace(_T(
"\\r"), _T(
"\r"));
114 s.
Replace(_T(
"\\\\"), _T(
"\\"));
127 bool m_Write(
EKind eKind, LPCTSTR lpszSectionName, LPCTSTR lpszKey, LPCTSTR lpszData)
130 return !! ::WritePrivateProfileString(
132 ms_ToWritingStr(lpszKey),
144 CStr m_Query(LPCTSTR lpszSectionName, LPCTSTR lpszKey)
const
147 ::GetPrivateProfileString(
149 ms_ToWritingStr(lpszKey),
155 strValue = ms_ToOriginalStr(strValue);
156 return strValue.
Mid(3);
176 CStrVector vstr = _super::EnumKeyNames(lpszSectionName);
179 vstr[i] = ms_ToOriginalStr(vstr[i]);
193 DWORD dwRc = ::GetPrivateProfileString(
195 ms_ToWritingStr(lpszKey),
204 return ms_CheckKind(atcBuf);
217 CStr str = m_Query(lpszSectionName, lpszKey);
218 switch (
GetKeyKind(lpszSectionName, lpszKey) )
258 return _super::WriteValue(lpszSectionName, lpszKey, value);
260 return m_Write(kind, lpszSectionName, lpszKey, value.
QueryString());
#define loop(VAR, CNT)
loop構文.
virtual CStrVector EnumKeyNames(LPCTSTR lpszSectionName) const
[取得] キー名一覧取得
virtual bool WriteValue(LPCTSTR lpszSectionName, LPCTSTR lpszKey, const IAccessor::CValue &value)
[設定] 情報設定
virtual CValue QueryValue(LPCTSTR lpszSectionName, LPCTSTR lpszKey) const
[取得] 情報取得
virtual EKind GetKeyKind(LPCTSTR lpszSectionName, LPCTSTR lpszKey) const
[取得] 情報取種取得
CExInifileAccessor(LPCTSTR lpszFile=NULL)
コンストラクタ
CStr GetBaseFileName(void) const
[取得] 対象ファイル取得
static CByteVector HexStringToBinary(const TYP *lpszHex)
[作成] HEX文字列→バイナリ
bool IsEmpty(void) const
[確認] 空チェック
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
static CStrT Fmt(const TCHAR *lpszFormat,...)
[作成] 書式付き文字列作成
LONGLONG ToLonglong(INDEX iOffset=0) const
[取得] 数値(LONGLONG)へ変換
int Replace(TYP tOld, TYP tNew)
[処理] 文字置換.
CStrT Mid(INDEX iOffset, size_t iSize=INVALID_SIZE) const
[作成] 範囲取得.
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
virtual size_t GetSize(void) const
[取得] サイズ取得
CStr QueryString(void) const
[取得] 文字列情報取得
EKind GetKind(void) const
[取得] 情報取種取得
CStrVector StrToStrVectorEx(LPCTSTR lpsz, TCHAR sepaChar='^', TCHAR escChar='\\')
[変換] CStr → CStrVector
@ EK_Dword
32Bit Unsigned Integer
@ EK_PluralStrings
複数の文字列群
@ EK_Longlong
64Bit Signed Integer