/* Insert() Inserisce nella lista il valore (numerico) per la sezione/chiave specificati. LPCSTR lpcszSectionName nome sezione LPCSTR lpcszKeyName nome chiave LPCSTR lpcszKeyValue valore chiave (numero) */ BOOL CConfig::Insert(LPCSTR lpcszSectionName,LPCSTR lpcszKeyName,DWORD dwKeyValue) { BOOL bInserted = FALSE; if(m_plistConfig) { CONFIG* c = (CONFIG*)m_plistConfig->Add(); if(c) { c->Init(lpcszSectionName,lpcszKeyName,dwKeyValue); SetModified(TRUE); bInserted = TRUE; } } return(bInserted); }
/* Import() Importa la configurazione corrente dal file specificato. */ BOOL CConfig::Import(LPCSTR lpcszRootKey,LPCSTR lpcszFileName) { BOOL bLoaded = FALSE; FILE* fp; if((fp = fopen(lpcszFileName,"r"))!=(FILE*)NULL) { char* p; char szBuffer[REGKEY_MAX_SECTION_NAME+REGKEY_MAX_KEY_NAME+REGKEY_MAX_KEY_VALUE+16]; char szSection[REGKEY_MAX_SECTION_NAME+1]; char szName[REGKEY_MAX_KEY_NAME+1]; char szValue[REGKEY_MAX_KEY_VALUE+1]; char szType[5]; // legge la prima linea controllando se si tratta di un file di configurazione fgets(szBuffer,sizeof(szBuffer)-1,fp); if((p = strchr(szBuffer,'\r'))==NULL) p = strchr(szBuffer,'\n'); if(p) *p = '\0'; if(strcmp(szBuffer,"[Configuration File]")!=0) { fclose(fp); return(bLoaded); } // legge il file di configurazione per linee while(fgets(szBuffer,sizeof(szBuffer)-1,fp)) { if((p = strchr(szBuffer,'\r'))==NULL) p = strchr(szBuffer,'\n'); if(p) *p = '\0'; // estrae i valori dalla linea (sezione, chiave, valore, tipo) memset(szSection,'\0',sizeof(szSection)); memset(szName,'\0',sizeof(szName)); memset(szValue,'\0',sizeof(szValue)); memset(szType,'\0',sizeof(szType)); p = strrchr(szBuffer,';'); if(p) { strcpyn(szType,p+1,sizeof(szType)); *p = '\0'; } p = strrchr(szBuffer,';'); if(p) { strcpyn(szValue,p+1,sizeof(szValue)); *p = '\0'; } p = strrchr(szBuffer,';'); if(p) { strcpyn(szName,p+1,sizeof(szName)); *p = '\0'; } p = szBuffer; if(p) strcpyn(szSection,p,sizeof(szSection)); if(szSection[0]!='\0' && szName[0]!='\0' && szValue[0]!='\0' && szType[0]!='\0') { if(strcmp(szType,"SZ")==0) { if(strcmp(UpdateString(szSection,szName,szValue),"")==0) { CONFIG* c = (CONFIG*)m_plistConfig->Add(); if(c) c->Init(szSection,szName,szValue); } } else if(strcmp(szType,"DW")==0) { if(UpdateNumber(szSection,szName,strtoul(szValue,NULL,0))==(DWORD)-1) { CONFIG* c = (CONFIG*)m_plistConfig->Add(); if(c) c->Init(szSection,szName,strtoul(szValue,NULL,0)); } } } } fclose(fp); Save(lpcszRootKey); bLoaded = TRUE; } return(bLoaded); }