?? yb_base.h
字號:
#ifndef _BINFILES_H_YBCHEN_
#define _BINFILES_H_YBCHEN_
/***************************************************************************\
* yb_base.h -- Victor Base Classes, version 1.2.2.4 *
*---------------------------------------------------------------------------*
* 文件、目錄 (文件夾) 和日期、時間的處理 *
* 多語言支持 (ANSI, GB2312/GBK, BIG5) *
* Build Oct.28,2004 *
*---------------------------------------------------------------------------*
* Copyright (C) 1997-2004, Victor Chen. *
* Homepage: http://www.cppfans.com/ *
* email: victor@cppfans.com *
\***************************************************************************/
#include <vcl.h>
#include <stdio.h>
#include <share.h>
#include <io.h>
#include <dos.h>
#include <dir.h>
#include <vector>
#include <Registry.hpp>
//---------------------------------------------------------------------------
namespace TVictorFuncs {
//---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------
enum TVictorChineseSortType
{
vcstPhysical = 0, //物理排序,與 wcscmp 相同
vcstSystemDefault = 1, //系統默認的排序規則,使用 Control Panel 設定值
vcstUserDefault = 2, //用戶默認的排序規則,使用 Control Panel 設定值
vcstStrokeCount = 3, //漢字筆劃排序
vcstBopomofo = 4, //漢字註音 ㄅㄆㄇㄈ 的次序
vcstPinyinAbcd = 5, //漢語拼音按照英文字母 abcd 的次序
};
//---------------------------------------------------------------------------
class PACKAGE TStringLocale
{
public:
enum TDbcsByteType
{
btSingleByte = 0,
btLeadByte = 1,
btTrailByte = 2,
};
enum TSysLCIDs
{
lcidNeutral = MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL ), //中性語言 Language neutral
lcidUserDefault = MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT ), //用戶默認 User default language
lcidSysDefault = MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT), //系統默認 System default language
lcidEnu = MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US ), //美國英語 United States English
lcidCht = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_TRADITIONAL), //繁體中文 Triditional Chinese
lcidChs = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED ), //簡體中文 Simplified Chinese
};
__property LCID LangID = { read = GetLangID, write = SetLangID };
__property UINT CodePage = { read = GetCodePage };
__property TVictorChineseSortType StringSortType = { read = _StringSortType , write = _StringSortType }; //字串排序規則 //String sort sype
__property bool CaseInsensitive = { read = _bCaseInsensitive, write = _bCaseInsensitive }; //排序是否忽略大小寫 //Case Insensitive
LCID GetLangID(void) {return _lcId ;}
void SetLangID(LCID id) {InitLCID(id) ;}
UINT GetCodePage(void) {return _CodePage ;}
bool IsFarEast(void) {return _FarEast ;}
bool IsMiddleEast(void) {return _MiddleEast;}
bool IsWestern(void) {return !(_FarEast||_MiddleEast);}
bool IsLeadByte(unsigned char c);
TDbcsByteType ByteType(const char *s, int idx);
TStringLocale();
TStringLocale(LCID lcId);
TStringLocale(const TStringLocale &slc);
private:
LCID _lcId;
WORD _PriLangID; //主語言標誌 //Primary language identifier
WORD _SubLangID; //從語言標誌 //Sub-language identifier
bool _FarEast; //是否遠東語言 //If is Far East language
bool _MiddleEast; //是否中東語言 //If is Middle East language
UINT _CodePage; //語言代碼頁 //Code page No.
CPINFO _CpInfo; //語言代碼資訊 //Code page information
TVictorChineseSortType _StringSortType; //排序規則 //String sort sype
bool _bCaseInsensitive; //排序是否忽略大小寫 //Case Insensitive
void InitLCID(void);
void InitLCID(LCID lcId);
void GetCodePageInfo(void);
bool IsLcidWestern(void);
void GetLcidEastern(void);
};
//---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------
class TVictorWideString;
class PACKAGE TVictorString
{
public:
operator char *() const { return _sbuf; }
char& operator [] (const int idx) { return _sbuf[idx]; }
const char &operator [] (const int idx) const { return _sbuf[idx]; }
operator AnsiString() const;
operator WideString() const;
char *c_str(void) const { return _sbuf; }
int Length(void) const { return _sbuf?strlen(_sbuf):0; }
void Clear(void);
bool IsEmpty(void) { return _sbuf?_sbuf[0]==0:true; }
const TVictorString &operator = (const char *s) { Assign( s); return *this; }
const TVictorString &operator = (const wchar_t *ws) { Assign(ws); return *this; }
const TVictorString &operator = (const TVictorString &s) { Assign( s); return *this; }
const TVictorString &operator = (const TVictorWideString &ws) { Assign(ws); return *this; }
const TVictorString &operator = (const AnsiString &s) { Assign( s.c_str()); return *this; }
const TVictorString &operator = (const WideString &ws) { Assign(ws.c_bstr()); return *this; }
bool operator == (const char *s) const;
bool operator != (const char *s) const;
bool operator < (const char *s) const;
bool operator > (const char *s) const;
bool operator <= (const char *s) const;
bool operator >= (const char *s) const;
bool operator == (const TVictorString &s) const;
bool operator != (const TVictorString &s) const;
bool operator < (const TVictorString &s) const;
bool operator > (const TVictorString &s) const;
bool operator <= (const TVictorString &s) const;
bool operator >= (const TVictorString &s) const;
TVictorString &operator += (const TVictorString &s);
TVictorString operator + (const TVictorString &s) const;
friend TVictorString operator + (const char *s1, const TVictorString &s2);
int operator - (const TVictorString &s) const;
int operator - (const char *s) const;
friend int operator - (const char *s1, const TVictorString &s2);
void Assign(const char *s);
void Assign(const wchar_t *ws);
void Assign(const TVictorString &s);
void Assign(const TVictorWideString &ws);
int printf(const char *format,...);
TVictorString &sprintf(const char *format,...);
int vprintf(const char* format,va_list paramList);
int Pos(const TVictorString &s) const;
int AnsiPos(const TVictorString &s) const;
bool IsLeadByte(int idx) const{ return _Locale->ByteType(_sbuf,idx)==TStringLocale::btLeadByte; }
bool IsTrailByte(int idx) const{ return _Locale->ByteType(_sbuf,idx)==TStringLocale::btTrailByte; }
TStringLocale::TDbcsByteType ByteType(int idx) const{ return _Locale->ByteType(_sbuf,idx); }
TVictorString UpperCase(void) const;
TVictorString LowerCase(void) const;
TVictorString Replace(const TVictorString &from, const TVictorString &to, bool bIgnoreCase=false) const;
TVictorString Left(int cnt) const;
TVictorString Right(int cnt) const;
TVictorString SubString(int idx, int cnt) const;
TVictorString Trim(void) const;
TVictorString TrimLeft(void) const;
TVictorString TrimRight(void) const;
bool CharIsChinese(int n) const; //第 n 個字是否為漢字
int CharStrokeCount(int n) const; //第 n 個字的筆劃數
TVictorString CharBopomofo(int n) const; //第 n 個字的註音『ㄅㄆㄇㄈ』
TVictorString CharPinyin(int n) const; //第 n 個字的拼音 "Abcd"
TVictorString Bopomofo(void) const; //註音『ㄅㄆㄇㄈ』字串
TVictorString Pinyin(void) const; //拼音 "Abcd" 字串
__property TStringLocale *Locale = { read = GetLocale, write = SetLocale };
TStringLocale *GetLocale(void) const{ return _Locale; }
void SetLocale(TStringLocale *lc);
virtual void AllocBuf(const int nSize);
TVictorString();
TVictorString(const char *s);
TVictorString(const wchar_t *ws);
TVictorString(const TVictorString &s);
TVictorString(const TVictorWideString &ws);
TVictorString(const AnsiString &s);
TVictorString(const WideString &ws);
virtual ~TVictorString();
private:
char *_sbuf;
int _nBufSize;
TStringLocale *_Locale;
};
//----------------------------------------------------------------------------
extern PACKAGE TVictorString operator + (const char *s1, const TVictorString &s2);
extern PACKAGE int operator - (const char *s1, const TVictorString &s2);
//----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------
class PACKAGE TVictorWideString
{
public:
operator wchar_t *() const { return _wsbuf; }
wchar_t &operator [] (const int idx) { return _wsbuf[idx]; }
const wchar_t &operator [] (const int idx) const { return _wsbuf[idx]; }
operator AnsiString() const;
operator WideString() const;
wchar_t *c_bstr(void) const { return _wsbuf; }
int Length(void) const { return _wsbuf?wcslen(_wsbuf):0; }
void Clear(void);
bool IsEmpty(void) { return _wsbuf?_wsbuf[0]==0:true; }
const TVictorWideString &operator = (const wchar_t *s) { Assign(s); return *this; }
const TVictorWideString &operator = (const char *s) { Assign(s); return *this; }
const TVictorWideString &operator = (const TVictorWideString &s) { Assign(s); return *this; }
const TVictorWideString &operator = (const TVictorString &s) { Assign(s); return *this; }
const TVictorWideString &operator = (const WideString &s) { Assign(s.c_bstr()); return *this; }
const TVictorWideString &operator = (const AnsiString &s) { Assign(s.c_str()); return *this; }
bool operator == (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)==0; }
bool operator != (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)!=0; }
bool operator < (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)<0; }
bool operator > (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)>0; }
bool operator <= (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)<=0; }
bool operator >= (const wchar_t *s) const; //{ return wcscmp(_wsbuf,s)>=0; }
bool operator == (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)==0; }
bool operator != (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)!=0; }
bool operator < (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)<0; }
bool operator > (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)>0; }
bool operator <= (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)<=0; }
bool operator >= (const TVictorWideString &s) const; //{ return wcscmp(_wsbuf,s._wsbuf)>=0; }
TVictorWideString &operator += (const TVictorWideString &s);
TVictorWideString operator + (const TVictorWideString &s) const;
friend TVictorWideString operator + (const wchar_t *s1, const TVictorWideString &s2);
int operator - (const TVictorWideString &s) const;
int operator - (const wchar_t *s) const;
friend int operator - (const wchar_t *s1, const TVictorWideString &s2);
void Assign(const wchar_t *s);
void Assign(const char *s);
void Assign(const TVictorWideString &s);
void Assign(const TVictorString &s);
int printf(const wchar_t *format,...);
TVictorWideString &sprintf(const wchar_t *format,...);
int vprintf(const wchar_t* format,va_list paramList);
int Pos(const TVictorWideString &s) const;
TVictorWideString UpperCase(void) const;
TVictorWideString LowerCase(void) const;
TVictorWideString Replace(const TVictorWideString &from, const TVictorWideString &to, bool bIgnoreCase=false) const;
TVictorWideString Left(int cnt) const;
TVictorWideString Right(int cnt) const;
TVictorWideString SubString(int idx, int cnt) const;
TVictorWideString Trim(void) const;
TVictorWideString TrimLeft(void) const;
TVictorWideString TrimRight(void) const;
bool CharIsChinese(int n) const; //第 n 個字是否為漢字
int CharStrokeCount(int n) const; //第 n 個字的筆劃數
TVictorWideString CharBopomofo(int n) const; //第 n 個字的註音『ㄅㄆㄇㄈ』
TVictorWideString CharPinyin(int n) const; //第 n 個字的拼音 "Abcd"
TVictorWideString Bopomofo(void) const; //註音『ㄅㄆㄇㄈ』字串
TVictorWideString Pinyin(void) const; //拼音 "Abcd" 字串
__property TStringLocale *Locale = { read = GetLocale, write = SetLocale };
TStringLocale *GetLocale(void) const{ return _Locale; }
void SetLocale(TStringLocale *lc);
virtual void AllocBuf(const int nSize);
TVictorWideString();
TVictorWideString(const wchar_t *s);
TVictorWideString(const char *s);
TVictorWideString(const TVictorWideString &s);
TVictorWideString(const TVictorString &s);
TVictorWideString(const WideString &s);
TVictorWideString(const AnsiString &s);
virtual ~TVictorWideString();
private:
wchar_t *_wsbuf;
int _nBufSize;
TStringLocale *_Locale;
};
//----------------------------------------------------------------------------
extern PACKAGE TVictorWideString operator + (const wchar_t *s1, const TVictorWideString &s2);
extern PACKAGE int operator - (const wchar_t *s1, const TVictorWideString &s2);
//----------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -