57 _super::AllDeleteRecord();
59 if ( fr.
Open(lpszFileName) )
68 _super::AllDeleteRecord();
89 if ( fw.
New(lpszFileName) )
116 BYTE withMemoFile4 :1;
117 BYTE withSqlTable :3;
118 BYTE withMemoFile :1;
139 year =
static_cast<BYTE
>(st.
wYear - 1900);
140 month =
static_cast<BYTE
>(st.
wMonth);
141 day =
static_cast<BYTE
>(st.
wDay);
144 C_ASSERT (
sizeof(THead) == 32 );
165 void SetName(LPCTSTR lpsz)
176 C_ASSERT (
sizeof(TField) == 32 );
189 if ( hd.version != 3 )
194 size_t fieldCount = (hd.headBytes -
sizeof(THead)) /
sizeof(TField);
195 size_t recordBytesTemp = 0;
196 loop ( i, fieldCount )
200 TFieldInfo fi(
CStr(fd.name), fd.fieldLength, fd.decimalLength,
static_cast<EFieldType>(fd.type));
201 if ( _super::AddField(fi) == INVALID_INDEX )
205 recordBytesTemp += fd.fieldLength;
214 if ( recordBytesTemp != hd.recordBytes )
216 TRACE2(
"ヘッダのレコードサイズ(%d)と各フィールドに書かれているサイズの合計(%d)が異なります。\n", hd.recordBytes, recordBytesTemp);
220 loop ( i, hd.recordCount )
230 INDEX rec = _super::AddRecord();
231 ASSERT( rec != INVALID_INDEX );
232 loop ( i, fieldCount )
239 if ( ! _super::SetStringRecord(rec, i,
CStr(a)) )
270 loop ( i, _super::GetFieldCount() )
273 _super::GetFieldInfo(fi, i);
276 hd.recordCount =
ToDword(_super::GetRecordCount());
277 hd.recordBytes = ToWord(rb + 1);
278 hd.headBytes = ToWord(_super::GetFieldCount() *
sizeof(TField) +
sizeof(THead) + 1);
280 _w.
Write(
sizeof(THead), &hd);
283 loop ( i, _super::GetFieldCount() )
286 if ( _super::GetFieldInfo(fi, i) ==
EK_Invalid )
290 widths[i] = fi.width;
293 fd.fieldLength =
static_cast<BYTE
>(fi.width);
294 fd.decimalLength =
static_cast<BYTE
>(fi.decimals);
295 fd.type =
static_cast<char>(fi.type);
296 _w.
Write(
sizeof(TField), &fd);
299 _w.
Write(
sizeof(BYTE), &b);
308 loop ( j, _super::GetFieldCount() )
310 size_t l = widths[j];
317 ASSERT ( len == hd.recordBytes );
318 _w.
Write(hd.recordBytes, buf.Ref());
322 _w.
Write(
sizeof(BYTE), &b);
325 friend class CDBaseFileTest;
#define loop(VAR, CNT)
loop構文.
bool SaveFile(LPCTSTR lpszFileName) const
[書出] DBFファイル書き出し
bool LoadFile(LPCTSTR lpszFileName)
[読込] DBFファイル読込み
bool Open(LPCTSTR lpszName, bool boIsShare=true, bool boDummy=false)
[操作] オープン
bool New(LPCTSTR lpszName, bool boIsShare=true)
[操作] 新規オープン.
size_t GetRecordCount(void) const
[取得] レコード数取得
CStrT Left(size_t iSize) const
[作成] 範囲取得.
size_t GetLength(void) const
[取得] 文字列長
CStrT & SetFromLeft(const TYP *lpText, size_t iLen)
[代入] 文字数制限代入.
static CStrT Lineup(TCHAR t, size_t length)
[作成] 指定文字を並べた文字列作成
void OnCatch(void) const
[表示] 内容表示
DWORD ToDword(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
TNB::CStrT< TCHAR > CStr
文字列クラス
void Copy(LPSTR _dst, LPCSTR src)
[複製] 文字列コピー(ASCII/SJIS用)
void Zero(V &value)
[設定] ゼロクリア.
void MemCopy(T *_pDst, const void *pSrc, size_t len)
[複製] メモリコピー
void ReadExactly(size_t size, LPVOID _P) const
[取得] 読み込み.
virtual void Write(size_t size, LPCVOID P)=0
[保存] 書き込み