当前位置: 首页 > news >正文

域名抢注网站源码wordpress导航栏添加按钮

域名抢注网站源码,wordpress导航栏添加按钮,wordpress下载时间太长,html网页制作个人网站时间紧张#xff0c;先记一笔#xff0c;后续优化与完善。 Windows下的ini文件的读取可以应用系统提供的api来实现 GetPrivateProfileString GetPrivateProfileInt ... 现实应用中, 如果不应用一种同一的方法来包装一下会让源代码看起来很乱。 所以,须要计划一个便利#xf…时间紧张先记一笔后续优化与完善。     Windows下的ini文件的读取可以应用系统提供的api来实现          GetPrivateProfileString     GetPrivateProfileInt     ...     现实应用中, 如果不应用一种同一的方法来包装一下会让源代码看起来很乱。     所以,须要计划一个便利雅观直观的配置文件操作类          准则是代码难看轻易维护          需求:     直观的调用形式     实现潜规则     满足各类数据(实现api经常应用的数据类型)           解释:      直观的调用形式是什么意思 以减少键盘输入和见文知意为准则的计划方式把长函数名变为符号。用符号来表示操作 潜规则 在配置ini访问中的潜规则是 1. Wiki上对ini的定义     INI文件有节的观点节用 [] 包围,类似数据中的表名称,如[startup]     名称/值对,类似数据库表中的字段,如TargetIP10.0.0.1     注释, 以;为注释的开始到行尾如MenuOneFile... ; 菜单的第一项文字描述 2. Windows系统中操作ini文件时有#扫尾的行是疏忽的,如: #对打印机的设置 3. 可配置是否疏忽Key的大小写 4. 符合语义的读取和写入 在windows api下GetPrivateProfile/WritePrivateProfileXXXX在调用该方法时同步执行对ini文件的操作 满足各类数据,在ini中经常应用的数据有两种,字符串和整型数据,满足所有数据类型明显不现实,可以在之后根据不同须要进行扩展计划应用方法: 1.  读取 CIniAccessor accessor(_T(config.ini)); std::wstring strMenuOne accessor[_T(startup)][_T(MenuOne)](_T(DefaultMenuItem)); 2. 写入 CIniAccessor accessor(_T(config.ini)); accessor[_T(startup)][_T(TargetIP)] _T(10.0.0.100);3. 更新 CIniAccessor accessor(_T(config.ini)); accessor.Update(); // 从磁盘上更新 accessor.Commit(); // 写入磁盘上面是数据结构 每日一道理 无知者为梦想中的虚幻而苦苦等待换回的不是所求的而是岁月在脸上留下的印痕一事无成的人一生便是虚度。生活中与其花时间去等待不如加快步伐去追寻理想试着与时间赛跑也许身躯、心理会感到劳累但这样的生活毕竟是充实的。 基础类typedef struct tagAccessorData {union VALUETYPE{LONG longValue;TCHAR * pszValue;}value;enum{TYPE_EMPTY, TYPE_LONG, TYPE_CHAR}valuetype;tagAccessorData():valuetype(TYPE_EMPTY){} }ACCESSORDATA; 辅助工具类 class CCoAccessorImpl:public ACCESSORDATA { private: TCHAR m_szTemp[30]; public:CCoAccessorImpl(){valuetype TYPE_EMPTY;value.longValue 0;}CCoAccessorImpl(const CCoAccessorImpl acc){valuetype acc.valuetype;if(acc.valuetype TYPE_CHAR){value.pszValue new TCHAR[_tcslen(acc.value.pszValue) 1];ZeroMemory(value.pszValue, sizeof(TCHAR) * (_tcslen(acc.value.pszValue) 1));_tcscpy(value.pszValue, acc.value.pszValue);}else{value.longValue acc.value.longValue;}}CCoAccessorImpl(const LONG lValue){valuetype TYPE_LONG;value.longValue lValue;}CCoAccessorImpl(LPCTSTR lpszValue){valuetype TYPE_CHAR;value.pszValue new TCHAR[_tcslen(lpszValue) 1];ZeroMemory(value.pszValue, sizeof(TCHAR) * (_tcslen(lpszValue) 1));_tcscpy(value.pszValue, lpszValue);}~CCoAccessorImpl(){if(valuetype TYPE_CHAR) delete [] value.pszValue;}CCoAccessorImpl operator (const CCoAccessorImpl acc){if(valuetype TYPE_CHAR) delete [] value.pszValue;value.longValue 0;valuetype acc.valuetype;if(acc.valuetype TYPE_CHAR){value.pszValue new TCHAR[_tcslen(acc.value.pszValue) 1];ZeroMemory(value.pszValue, sizeof(TCHAR) * (_tcslen(acc.value.pszValue) 1));_tcscpy(value.pszValue, acc.value.pszValue);}else{value.longValue acc.value.longValue;}return *this;}CCoAccessorImpl operator (const LONG lValue){if(valuetype TYPE_CHAR) delete [] value.pszValue;valuetype TYPE_LONG;value.longValue lValue;return *this;}CCoAccessorImpl operator (LPCTSTR lpszValue){if(valuetype TYPE_CHAR) delete [] value.pszValue;valuetype TYPE_CHAR;value.pszValue new TCHAR[_tcslen(lpszValue) 1];ZeroMemory(value.pszValue, sizeof(TCHAR) * (_tcslen(lpszValue) 1));_tcscpy(value.pszValue, lpszValue);return *this;}operator LPCTSTR (){ switch(valuetype){ case TYPE_LONG: return _ltot(value.longValue, m_szTemp, 10);case TYPE_CHAR: return value.pszValue;}return _T();}operator LONG (){ switch(valuetype){case TYPE_LONG:case TYPE_EMPTY:return value.longValue;}return _ttol(value.pszValue);}CCoAccessorImpl operator ()(LPCTSTR lpsz) //default value{if(valuetype TYPE_EMPTY) return CCoAccessorImpl(lpsz);return *this;}CCoAccessorImpl operator ()(LONG lValue) //default value{if(valuetype TYPE_EMPTY) return CCoAccessorImpl(lValue);return *this;}}; typedef std::basic_stringTCHAR TCharArray;struct less {bool operator()(const TCharArray _Left, const TCharArray _Right) const{ return _tcsicmp(_Left.c_str(), _Right.c_str()) 0;} };templateclass ValueType, BOOL bSensitive class CKeyValueArray:public std::mapTCharArray, ValueType, less { public:CKeyValueArray(){}~CKeyValueArray(){}ValueType operator[](TCharArray charArray){if(!bSensitive) _tcsupr((TCHAR*)charArray.data());return std::mapTCharArray, ValueType, less::operator[](charArray);} }; // 读文件操作 templateclass Storage struct iniparser {BOOL operator()(Storage store, LPCTSTR lpszFilePath){HANDLE hFile CreateFile(lpszFilePath, // file to openGENERIC_READ, // open for readingFILE_SHARE_READ, // share for readingNULL, // default securityOPEN_EXISTING, // existing file onlyFILE_ATTRIBUTE_NORMAL, // normal fileNULL); // no attr. templateif (hFile INVALID_HANDLE_VALUE) { return FALSE; }TCHAR sz[2] {0};DWORD dwRead 0;TCharArray tcaLine;TCharArray tcaSectionName;struct foo{static void parse(Storage store, TCharArray tcaSectionName, TCharArray tcaLine){if(!tcaLine.size()) return;// parse []TCHAR szComment[MAX_PATH] {0};if(tcaLine.at(0) _T(#)) return;TCharArray sSec;if(_stscanf(tcaLine.c_str(), _T([%[^]]]), (TCHAR*)sSec.assign(MAX_PATH,0).data())){tcaSectionName sSec;}else{// parse key valueTCHAR szKey[MAX_PATH] {0};TCHAR szValue[MAX_PATH] {0};if(2 _stscanf(tcaLine.c_str(), _T(%[^]%[^\0]), szKey, szValue)) {store[tcaSectionName][szKey] szValue;}}}};while(ReadFile(hFile, sz, sizeof(TCHAR),dwRead, NULL)){if(!dwRead) break;if(!(sz[0] _T(\r) || sz[0] _T(\n))) {tcaLine.push_back(sz[0]);continue;}foo::parse(store, tcaSectionName, tcaLine);tcaLine.clear();tcaLine.reserve(); }CloseHandle(hFile);foo::parse(store, tcaSectionName, tcaLine); return TRUE;} }; // 写文件操作 templateclass Storage struct inipersistor {BOOL operator()(Storage store, LPCTSTR lpszFilePath){HANDLE hFile CreateFile(lpszFilePath, // file to openGENERIC_WRITE, // open for readingFILE_SHARE_WRITE, // share for readingNULL, // default securityOPEN_ALWAYS, // existing file onlyFILE_ATTRIBUTE_NORMAL, // normal fileNULL); // no attr. templateif (hFile INVALID_HANDLE_VALUE) { return FALSE; }for(Storage::iterator it store.begin();it ! store.end();it){TCharArray tcaSectionName (*it).first;Storage::mapped_type kva (*it).second;DWORD dwWritten 0;WriteFile(hFile, _T([), sizeof(TCHAR), dwWritten, NULL); WriteFile(hFile, tcaSectionName.c_str(), sizeof(TCHAR) * tcaSectionName.size(), dwWritten, NULL);WriteFile(hFile, _T(]\r\n), sizeof(TCHAR) * 3, dwWritten, NULL);for(Storage::mapped_type::iterator itKeyVal kva.begin();itKeyVal ! kva.end();itKeyVal){TCharArray tcaKey (*itKeyVal).first;TCharArray tcaVal (*itKeyVal).second;WriteFile(hFile, tcaKey.c_str(), sizeof(TCHAR) * tcaKey.size(), dwWritten, NULL);WriteFile(hFile, _T(), sizeof(TCHAR), dwWritten, NULL); WriteFile(hFile, tcaVal.c_str(), sizeof(TCHAR) * tcaVal.size(), dwWritten, NULL);WriteFile(hFile, _T(\r\n), sizeof(TCHAR) * 2, dwWritten, NULL);}}CloseHandle(hFile);return TRUE;} }; 访问类templateclass ValueType CCoAccessorImpl, BOOL bSensitive FALSE,class Parser iniparserstd::mapTCharArray, CKeyValueArrayValueType,bSensitive,less ,class Persistor inipersistorstd::mapTCharArray, CKeyValueArrayValueType,bSensitive,less class TIniAccessor { public:private:Parser _parser;Persistor _persistor;TCharArray m_szFileName; public:TIniAccessor(LPCTSTR lpsz):_parser(Parser()),_persistor(Persistor()){m_szFileName lpsz;_parser(m_sectionarray, m_szFileName.c_str());}BOOL Update(){return _parser(m_sectionarray, m_szFileName.c_str());}BOOL Commit(LPCTSTR lpszSaveIniFile NULL){TCharArray tca m_szFileName;if(lpszSaveIniFile) tca lpszSaveIniFile;return _persistor(m_sectionarray, tca.c_str());}~TIniAccessor(){} private: typedef std::mapTCharArray, CKeyValueArrayValueType,bSensitive, less SectionArray;SectionArray m_sectionarray; public: CKeyValueArrayValueType,bSensitive operator [](TCharArray charArray){if(!bSensitive) _tcsupr((TCHAR*)charArray.data());return m_sectionarray[charArray];} }; 访问类typedef TIniAccessor CIniAccessor;   文章结束给大家分享下程序员的一些笑话语录 自行车 一个程序员骑着一个很漂亮的自行车到了公司另一个程序员看到了他问 到“你是从哪搞到的这么漂亮的车的” 骑车的那个程序员说 “我刚从那边过来 有一个漂亮的姑娘骑着这个车过来 并停在我跟前把衣服全脱了然后对我说‘你想要什么都可以’”。 另一个程序员马上说到 “你绝对做了一个正确的选择 因为那姑娘的衣服你 并不一定穿得了”。 --------------------------------- 原创文章 By 文件和读取--------------------------------- 转载于:https://www.cnblogs.com/jiangu66/archive/2013/06/01/3113075.html
http://www.huolong8.cn/news/460349/

相关文章:

  • 济南企业建站排行榜广州专业网页制作
  • 三明市住房与建设局网站广州广告公司排行榜
  • 网站规划中的三种常用类型世界互联网峰会马云
  • 网站分栏目怎么做wordpress公众号菜单
  • 做网站推销话术注册100万的公司一年缴纳多少税
  • 北京网站制作服务东莞网站建设培训
  • 腾讯云win建设网站江门加盟网站建设
  • 网站建设的发展目标我做网站
  • 企业备案信息哪里可以查兰州seo排名优化服务
  • 卓进网站网页设计实验报告小结
  • 禅城建网站网络营销工作
  • 有哪些网站可以做笔译金蝶软件是干什么的
  • 宁波网站建设的步骤过程怎么制作网站图片不显示
  • 做网站构思保险公司网站开发
  • 湛江网站建设招聘深圳建设工程交易网站宝安
  • 乡镇中心小学校园网站建设指南广州建设教育网站
  • 合肥 网站建设网站开发逻辑
  • 济宁百度网站建设百度推广如何计费
  • 黄山网站建设哪家强邯郸购物网站建设
  • 网站做专题贵州网站制作品牌公司
  • 常用的网站建设技术有ssc网站建设教程
  • html手机网站开发教程辽宁建设工程招标信息网官网
  • 支付网站建设费进什么科目国外网站推广服务
  • 评价一个网站旅游网站建设方案预算
  • 建设集团网站价格网站开发合同模板免费
  • 提高网站打开速度的7大秘籍VPS如何做网站服务器
  • 学做网站传媒公司创业
  • 湛江网站建设的详细过程秦皇岛海三建设
  • 网站设计与制作说明书维护平台是什么工作
  • 贵阳论坛网站建设风铃制作