Buenas noches,
Estoy recompilando todo con la última versión de FWPPC y obtengo un error que windows anuncia como que se ha producido un error grave y la aplicación debe cerrarse.
Más o menos como un GPF en windows de escritorio.
Después de muchas trazas al código, compruebo que usando la función Curdir() es cuando sucede. De 10 veces 1 a lo mejor funciona. La quito y todo funciona correctamente.
El SO es win CE 6.0
GPF en FWPPC 2015 (Solucionado)
GPF en FWPPC 2015 (Solucionado)
Last edited by jmartial on Mon Nov 30, 2015 10:15 pm, edited 1 time in total.
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GPF en FWPPC 2015
Joaquín,
Podrias usar GetCurrentDirectory() instead of CurDir()
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Podrias usar GetCurrentDirectory() instead of CurDir()
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Re: GPF en FWPPC 2015
Hola Antonio,
Ya he hecho la función y funciona perfectamente sin ningún tipo de GPF en Win CE 6.0
Hay 2 temas que te comento:
- ¿Por qué no hay que pasar de unicode a ansi? En otras funciones había que hacerlo, y en esta función me he vuelto loco, hasta que al ver caracteres raros, probé sin convertir.
- ¿podrías incluirla sustituyendo a curdir() en las librerías de fwppc? Para no tener que ir parchendo el código.
Ya he hecho la función y funciona perfectamente sin ningún tipo de GPF en Win CE 6.0
Code: Select all
DWORD WINAPI GetCurrentDirectory( DWORD len, LPWSTR buffer );
HB_FUNC( CECURDIR )
{
LPWSTR buffer = ( LPWSTR ) hb_xgrab( MAX_PATH ) ;
GetCurrentDirectory( MAX_PATH , buffer );
hb_retc( (char *) buffer );
hb_xfree( buffer ) ;
}
- ¿Por qué no hay que pasar de unicode a ansi? En otras funciones había que hacerlo, y en esta función me he vuelto loco, hasta que al ver caracteres raros, probé sin convertir.
- ¿podrías incluirla sustituyendo a curdir() en las librerías de fwppc? Para no tener que ir parchendo el código.
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GPF en FWPPC 2015 (Solucionado)
Joaquín,
No estamos compilando en modo completo unicode en FWPPC, luego
solo algunas funciones en C necesitan esa conversión.
Si, incluyo tu función para la próxima versión, gracias!
No estamos compilando en modo completo unicode en FWPPC, luego
solo algunas funciones en C necesitan esa conversión.
Si, incluyo tu función para la próxima versión, gracias!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GPF en FWPPC 2015 (Solucionado)
Joaquín,
Como en FWPPC ya existe una función GetCurDir() y tenia un bug potencial,
el reemplazado su código con el tuyo, gracias
Como en FWPPC ya existe una función GetCurDir() y tenia un bug potencial,
el reemplazado su código con el tuyo, gracias
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GPF en FWPPC 2015 (Solucionado)
Joaquín,
Unos _ en tu código:
Unos _ en tu código:
Code: Select all
HB_FUNC( GETCURDIR )
{
LPSTR buffer = ( LPSTR ) hb_xgrab( MAX_PATH );
GetCurrentDirectory( MAX_PATH, buffer );
hb_retc( ( char * ) buffer );
hb_xfree( buffer ) ;
}
Re: GPF en FWPPC 2015 (Solucionado)
Antonio,
En la definición de la función ponía LPWSTR buffer
¿Por qué lo has cambiado por LPSTR ?
Por curiosidad.
En la definición de la función ponía LPWSTR buffer
¿Por qué lo has cambiado por LPSTR ?
Por curiosidad.
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: GPF en FWPPC 2015 (Solucionado)
Porque no llamamos a GetCurrentDirectory() en modo unicode
LPWSTR es un puntero a una cadena unicode
LPSTR es un puntero a una cadena tradicional
LPWSTR es un puntero a una cadena unicode
LPSTR es un puntero a una cadena tradicional