TNB Library
TnbCeInifileAccessor.h
[詳解]
1#pragma once
11#ifndef _WIN32_WCE
12 #error TnbCeInifileAccessor.h is only supported on Windows CE platforms.
13#endif // _WIN32_WCE
14
15
16
18#include "TnbFileName.h"
19#include "TnbFile.h"
20
21
22
23//TNB Library
24namespace TNB
25{
26
27
28
57{
58 DEFSUPER(CInifileTextAccessor);
59public:
60
65 explicit CCeInifileAccessor(LPCTSTR lpszFile = NULL) : _super()
66 {
67 SetBase(lpszFile);
68 }
69
74 void SetBase(LPCTSTR lpszFile = NULL)
75 {
76 m_strFile = (lpszFile == NULL) ? MakeInifilePath() : lpszFile;
77 m_Read(m_strFile);
78 }
79
85 static CStr MakeInifilePath(void)
86 {
87 CStr str = _super::MakeDefineFilePath();
88 str += _T(".ini");
89 return str;
90 }
91
97 {
98 return m_strFile;
99 }
100
105 virtual CStr GetTypeName(void) const
106 {
107 return _T("Inifile");
108 }
109
117 virtual bool Flush(void)
118 {
119 CFileName fn = m_strFile;
120 try
121 {
122 m_Write(fn);
123 }
124 catch(CTnbException& e)
125 {
126 e.OnCatch();
127 return false;
128 }
129 catch(...)
130 {
131 return false;
132 }
133 return true;
134 }
135
136private:
143 bool SetText(LPCTSTR lpszText);
144
149 CStr GetText(void) const;
150
155 bool m_Read(LPCTSTR lpszFile)
156 {
157 _super::DeleteAllSection();
158 CFileName name = lpszFile;
159 if ( ! name.IsExist() )
160 {
161 return false;
162 }
163 CFileReader f;
164 if ( ! f.Open(name) )
165 {
166 return false;
167 }
168 CByteVector vb = f.ReadInto();
169 if ( vb.IsEmpty() )
170 {
171 return false;
172 }
173 vb.Add(0);
174 CStr str = reinterpret_cast<LPCSTR>(vb.ReferBuffer());
175 return _super::SetText(str);
176 }
177
182 void m_Write(LPCTSTR lpszFile)
183 {
184 CFileWriter f;
185 if ( ! f.New(lpszFile) )
186 {
187 return;
188 }
189 CAscii d = _super::GetText();
190 LPCSTR lpsz = d;
191 f.Write(d.GetLength(), lpsz);
192 }
193
194 CStr m_strFile;
195};
196
197
198
205
206
207
208};//TNB
209
ファイルネーム関係のヘッダ
ファイル関係のヘッダ
iniファイル形式テキスト情報アクセス関係のヘッダ
iniファイル情報アクセスクラス(CE専用)
virtual CStr GetTypeName(void) const
[取得] タイプ名取得
virtual bool Flush(void)
[操作] フラッシュ.
CStr GetBaseFileName(void) const
[取得] 対象ファイル取得
void SetBase(LPCTSTR lpszFile=NULL)
[設定] 対象ファイル指定
CCeInifileAccessor(LPCTSTR lpszFile=NULL)
コンストラクタ
static CStr MakeInifilePath(void)
[作成] iniファイルパス作成.
ファイル名管理クラス
Definition: TnbFileName.h:59
bool IsExist(void) const
[確認] 有無チェック
Definition: TnbFileName.h:455
ファイル読み込みクラス
Definition: TnbFile.h:338
bool Open(LPCTSTR lpszName, bool boIsShare=true, bool boDummy=false)
[操作] オープン
Definition: TnbFile.h:364
ファイル書き込みクラス
Definition: TnbFile.h:475
bool New(LPCTSTR lpszName, bool boIsShare=true)
[操作] 新規オープン.
Definition: TnbFile.h:501
virtual void Write(size_t size, LPCVOID P)
[保存] ファイル書き込み
Definition: TnbFile.h:628
iniファイル形式テキスト情報アクセスクラス
size_t GetLength(void) const
[取得] 文字列長
Definition: TnbStr.h:518
例外ベースクラス
Definition: TnbException.h:36
void OnCatch(void) const
[表示] 内容表示
Definition: TnbException.h:69
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得
Definition: TnbVector.h:664
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
Definition: TnbVector.h:383
CCeInifileAccessor CInifileAccessor
iniファイル情報アクセスクラス
TNB Library
Definition: TnbDoxyTitle.txt:2
bool IsEmpty(void) const
[確認] 要素の有無確認.
CByteVector ReadInto(size_t size=0) const
[取得] 読み込み
Definition: TnbReader.h:150