⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yb_base.h

📁 网吧电量采集、温湿度采集串口通信实例程序
💻 H
📖 第 1 页 / 共 4 页
字号:
#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 + -