/* String() Restituisce o aggiorna il valore (stringa) associato alla sezione/chiave a seconda del parametro associato al valore (NULL/-1 recupera, in caso contrario aggiorna). LPCSTR lpcszSectionName nome sezione LPCSTR lpcszKeyName nome chiave LPCSTR lpcszKeyValue valore chiave (stringa) */ LPCSTR CConfig::String(LPCSTR lpcszSectionName,LPCSTR lpcszKeyName,LPCSTR lpcszKeyValue/*=NULL*/) { static char* p; CONFIG* c; ITERATOR iter; p = ""; // scorre la lista cercando l'entrata relativa alla coppia sezione/chiave if((iter = m_plistConfig->First())!=(ITERATOR)NULL) { do { c = (CONFIG*)iter->data; if(c) if(strcmp(lpcszSectionName,c->GetSection())==0) { if(strcmp(lpcszKeyName,c->GetName())==0) { // salta i valori marcati per l'eliminazione (NULL_TYPE) if(c->GetType()!=NULL_TYPE) { if(lpcszKeyValue!=NULL) { // aggiorna il valore c->SetValue(lpcszKeyValue); p = (char*)c->GetValue(p); break; } else { // ricava il valore p = (char*)c->GetValue(p); if(!*p) p = ""; break; } } } } iter = m_plistConfig->Next(iter); } while(iter!=(ITERATOR)NULL); } return(p); }
/* Number() Restituisce o aggiorna il valore (numerico) associato alla sezione/nome a seconda del parametro associato al valore (NULL/-1 recupera, in caso contrario aggiorna). LPCSTR lpcszSectionName nome sezione LPCSTR lpcszKeyName nome chiave LPCSTR lpcszKeyValue valore chiave (numero) */ DWORD CConfig::Number(LPCSTR lpcszSectionName,LPCSTR lpcszKeyName,DWORD dwKeyValue/*=(DWORD)-1L*/) { DWORD l = (DWORD)-1L; CONFIG* c; ITERATOR iter; // scorre la lista cercando l'entrata relativa alla coppia sezione/chiave if((iter = m_plistConfig->First())!=(ITERATOR)NULL) { do { c = (CONFIG*)iter->data; if(c) if(strcmp(lpcszSectionName,c->GetSection())==0) { if(strcmp(lpcszKeyName,c->GetName())==0) { // salta i valori marcati per l'eliminazione (NULL_TYPE) if(c->GetType()!=NULL_TYPE) { if(dwKeyValue!=(DWORD)-1L) { // aggiorna il valore c->SetValue(dwKeyValue); l = c->GetValue(l); break; } else { // ricava il valore l = c->GetValue(l); break; } } } } iter = m_plistConfig->Next(iter); } while(iter!=(ITERATOR)NULL); } return(l); }