[C con Clase] Leer ini ayuda

Steven Davidson steven en conclase.net
Lun Feb 12 07:15:14 CET 2007


Hola Henry,

El pasado 2007-02-12 03:07:55, henry escribió:

h> gracias por la ayuda Steven, y por ser tan paciente en explicar a detalle cada uno de los problemas 

De nada; para eso estamos.

h> ahora yo cambie la funcion por la que sugeristes
h> LPCSTR LeerIni( LPCSTR Seccion, LPCSTR Key, LPCSTR FileIni, LPCSTR Valor="", int
h> nCant,const  char ValorDefecto="-1" )
h> {
h>   GetPrivateProfileString( Seccion, Key, ValorDefecto, Valor, nCant, FileIni );
h>   return Valor;
h> }
h> pero sigue saliendo ese error, que no tengo idea de porque es :

Veamos los errores.

h> invalid conversion from `const char' to `const CHAR*' 
h>  initializing argument 3 of `DWORD GetPrivateProfileStringA(const CHAR*, const CHAR*, const CHAR*, CHAR*, DWORD, const CHAR*)' 

Sospecho que el error está en los valores que pasas a la hora de invocar a 'LeerIni()'. Seguramente estás pasando un carácter para el tercer parámetro. Esto es un error ya que espera encontrarse con una cadena constante: 'const char *'.

h>  invalid conversion from `const CHAR*' to `CHAR*' 
h>  initializing argument 4 of `DWORD GetPrivateProfileStringA(const CHAR*, const CHAR*, const CHAR*, CHAR*, DWORD, const CHAR*)' 
h>  

Aquí el error está en que pasas un 'const char *' (Valor) como si fuese un 'char *' para el cuarto argumento. Obviamente esto es un error. El parámetro 'Valor' debe ser de tipo 'char *', porque contendrá la cadena resultante de la operación. Dicho de otro modo, 'Valor' es un parámetro de salida.


Por último, tienes otro error al indicar los parámetros por defecto. No puedes elegir los parámetros que quieras para darles valores por defecto. Existen ciertas reglas gramaticales para hacer esto. Basta con decir, que la lista de los parámetros con valores por defecto es secuencial (sin saltarse ningún parámetro) y empezando desde atrás. Dicho esto, tu prototipo debería ser algo como el siguiente:

LPCSTR LeerIni( LPCSTR Seccion, LPCSTR Key, LPCSTR FileIni, LPCSTR Valor="",
                int nCant=1, const char *ValorDefecto="-1" );

Si sigues teniendo problemas, deberías decirnos las sentencias donde se encuentran los errores al igual que mostrarnos las sentencias donde invocas a tu función junto con las declaraciones de los valores que pasas.


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase