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

📄 prefs.cpp

📁 一个嵌入式系统的C代码
💻 CPP
字号:
//*************************************************************************//  MODULE : System Initialization Parameters support module              *//  AUTHOR : Ron Chernich                                                 *//  PURPOSE: Class methods                                                *//  HISTORY:                                                              *//   21-MAR-95  First Version (MS Visual C++ 1.5)                         *//*************************************************************************#include "prefs.hpp"///////////////////////////////////////////////////////////////////////////// constructor tries to open the preferences file..//Preferences::Preferences (void){  ini.open(PREFS_NAME, PREFS_MODE);  BOOL  bOpen = __OPEN_TEST;//  bOpen = FALSE;  if (!bOpen)    pBuffer = NULL;  else {    pBuffer = new char[MAX_PREF];    if (NULL == pBuffer) {      ini.close();      bOpen = FALSE;    }  }}/////////// close prefs file, if open//Preferences::~Preferences (void){  if (bOpen) {    ini.close();    DELETE_ARRAY pBuffer;  }}/////////////////// The INI file contains lines of the form:////     KEY = VALUE ;COMMENT//// (the whitespace around the VALUE and the comment are optional// This private member scans the file for a line starting// with the passed key string (ignoring case) and extracts the Value stuff// If a comment is present, it and any trailing white space are deleted.// RETURNS: pointer to the first non-space char after the equals sign or NULL//char *Preferences::FindKey (const char *pszKey){  ini.seekg(0);  for (;;)  {    if (ini.eof())      break;    ini.getline(pBuffer, MAX_PREF);    char *cp = pBuffer;    while (*cp)      tolower(*cp++);  #ifdef _DOS_ENV    if (0 == strnicmp(pBuffer, pszKey, strlen(pszKey))) {  #endif  #ifdef UNIX  // why do they use casecmp instead of icmp (which is standard?)    if ( strncasecmp(pBuffer, pszKey, strlen(pszKey))) {  #endif      cp = strchr(pBuffer, '=');      if (*cp)      {	while (*cp)	  if (SPACE != *(++cp))	    break;	if (*cp)	{	  char *cp2 = strchr(cp, ';');	  if (cp2)	  {	    while (SPACE == *(cp2 - 1))	      --cp2;	    *cp2 = '\0';	  }	}      }      return cp;    }  }  return 0;}///////////////// find and return the integer value associated with the passed key tag// string.  If not found (or no INI file) return the passed default value// RETURNS: Integer value for key identifier//UINT16 Preferences::GetPrefInt (const char *pszKey, UINT16 nDef){  UINT16 nVal = nDef;  if (bOpen) {    char *cp = FindKey(pszKey);    if (cp)      nDef = (UINT16)atoi(cp);  }  return nDef;}////////////// find the passed key tag in the INI file and copy to the callers buffer// If not found (or no INI file) use the passed default value// RETURNS: Number of characters copied//UINT16 Preferences::GetPrefStr  (const char *pszKey, const char *pszDef, char *psz, UINT16 n){  if (!bOpen)    strncpy(psz, pszDef, n);  else {    char *cp = FindKey(pszKey);    if (cp)      strncpy(psz, cp, n);    else      strncpy(psz, pszDef, n);  }  return strlen(psz);}///////////////////////////////// EOF //////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -