Función base "GetPrivateProfileSection". Descripción http://msdn.microsoft.com/en-us/library/windows/desktop/ms724348(v=vs.85).aspx .
Si copia el ejemplo :
- Asegúrese de modificar la ruta del fichero de configuración.
- Reserve el espacio de memoria oportuno en base al numero de sección del fichero de configuración.
CÓDIGO FUENTE (comentarios incluidos dentro del código fuente)
Funciones Base :
- GetPrivateProfileSection : devuelve una estructura de datos con las sección de un fichero de configuración.
- hasSection() : Determina si la estructura devuelta por "GetPrivateProfileSection" tiene alguna sección.
- nextSection(); Avanza a la siguiente sección almacena dentro de la estructura de datos devuelta por "GetPrivateProfileSection".
//Ficheros cabecera
#include
#include
#include
using namespace std;
//Funcionalidad : determina la existencia de secciones
//Paremetro de entrada : estructura de datos con los nombre de las secciones
//Parametro de salida : 0 no existen secciones , 1 existen secciones
int hasSections(char *§ionStructure){
if (*sectionStructure == 0)//Hemos llegado al final de la estructura
return 0;
else // No hemos llegado al final
return 1;
}
//Funcionalidad : avanzar a la siguiente sección.
//Paremetro de entrada : estructura de datos con los nombre de las secciones
//Parametro de salida : 0 no existen secciones , 1 existen secciones
int nextSectionName(char *§ionStructure){
//incrementamos el puntero para que apunte a la siguiente sección
sectionStructure += string(sectionStructure).size()+1;
//nos aseguramos que no hemos llegado al final de la estructura
return hasSections(sectionStructure);
}
//PROGRAMA PRINCIPAL
int main(){
//fichero de configuración
char iniFileName[100];
//Especificamos la ruta local de un fichero de configuracion
sprintf_s(iniFileName, 100, "C:\\Users\\invitado\\Desktop\\default.ini");
//Estructura que almacena las secciones de un fichero de configuración
char *sectionStructure = NULL;
//Reservamos espacio de memoria SUFICIENTE para la estructura sectionStructure
DWORD nSize = 300;
sectionStructure = new char[nSize];
//Recuperamos las secciones del fichero de configuración
GetPrivateProfileSectionNamesA(sectionStructure, nSize, iniFileName);
//Nos aseguramos de la existencia de al menos una sección
if (hasSections(sectionStructure)){
do{//por cada sección
//imprimimos su contenido por pantalla
cout << sectionStructure << endl;
}while (nextSectionName(sectionStructure)); //avanzamos a la siguiente sección
}
system("pause");
}
Estructura del fichero de configuración probado :
[ SERCOM ] LOG = "Ruta local de un fichero de log" ETIQUETAS = "Ruta local con el formato de las etiquetas" [ Oracle ] IP = 192.168.0.0 ESQUEMA = XE PUERTO = 5503 USUARIO = admin PASS = [ MYSQL ] IP = 192.168.0.120 ESQUEMA = maquina PUERTO = 1102 USUARIO = root PASS = [ IMPRESORA ] IP = 192.168.16.97 PUERTO = 21 USUARIO = ftp PASS =